广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >web安全php基础_php常量及可变变量(魔术变量)
  • 662
分享到

web安全php基础_php常量及可变变量(魔术变量)

phpandroidandroidstudiophp常量php可变变量php魔术变量 2023-09-26 10:09:58 662人浏览 薄情痞子
摘要

常量 PHP中常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 常量有两点需要特别注意的地方 常量

常量

PHP中常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

常量有两点需要特别注意的地方

  • 常量在整个脚本中都可以使用。
  • 常量值被定义后,在脚本的其他任何地方都不能被改变
设置 php 常量

设置常量,使用 define() 函数,函数语法如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

该函数有三个参数:

  • name:必选参数,常量名称,即标志符。

  • value:必选参数,常量的值。

  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。

注意:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。(可以使用@忽略警告)

示例如下,

define('hi','php是世界上最好的语言',false);echo hi;echo "
"
;//第三个参数true已被弃用,只能接收false参数,想要忽略警告则添加@@define('hello','helloWorld!!!',true);#正常输出echo hello;#报错,因为true被弃用现在常量大小写敏感echo HELLO;?>

在这里插入图片描述
报错的意思是 不区分大小写的常量已弃用。此常量的正确大小写是“hello” 在第11行

常量是全局的

常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。

define("PHP", "PHP是世界上最好的语言");function myTest() {    echo PHP;}myTest();    // 输出PHP是世界上最好的语言?>

在这里插入图片描述

常量与变量细节
  1. 常量和(全局)变量在不同的名字空间中。这意味着例如 HELLO 和 $HELLO是不同的。
define("HELLO", "PHP是世界上最好的语言");$HELLO='hello world!!!';echo HELLO;echo "
"
;echo $HELLO;?>

在这里插入图片描述

  1. 常量和变量不同,常量只能包含标量数据(boolean,integer,float 和 string)

可变变量(魔术变量)

到了我最喜欢的可变变量了,在PHP中有一个其他类型的变量,“可变变量”。可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称。,可变变量声明为两个$$符(使用两个美元符号($))

$a='hello  world';$$a="php是世界上最好的语言"; //这就是一个可变变量var_dump($a);echo "
"
;var_dump($$a);?>

这时两个变量都被定义了,我们可以尝试输出他们,如下,变量正常输出了
在这里插入图片描述

但这里有一个有意思的问题,当我们正常声明了一个可变变量,我们可以再直接声明一个可变变量

$a='hello  world';$$a="php是世界上最好的语言"; //这就是一个可变变量$$b='hhh'; //直接声明$$b编译器不再报错var_dump($a);echo "
"
;var_dump($$a);echo '
'
;var_dump($b);echo '
'
;var_dump($$b);?>

查看他们的输出结果,可以看到$b的值依旧是NULL
在这里插入图片描述

可变变量的作用

上面说到了,可变变量是一种PHP独特的变量,他允许动态改变一个变量的名称
即,在PHP中如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后,将该值作为“真正”的变量名称。例如:
实例如下

$a='hello';$hello="php是世界上最好的语言"; var_dump($a);echo "
"
;var_dump($$a);echo "
"
;var_dump($hello); //当掉用$hello的时候输与$$a是一样的?>

输出如下,
在这里插入图片描述
当$a的值发生改变时,通过$$a的调用的变量也得相应的改变

$a='hello';//因为$a=hello,使用$$a=$hello(hello是$a的值,当有两个$时会被这样解析);$hello="php是世界上最好的语言"; //原本是打算写$$a的这才是可变变量的声明方式,但是不宜于理解var_dump($a);echo "
"
;var_dump($$a);echo "
"
;var_dump($hello); //当掉用$hello的时候输与$$a是一样的echo "
"
;$a='hi';var_dump($$a);//$$a会被解析从$hi,因为没有声明过$hi,所以$$a输出null?>

输出如下
在这里插入图片描述

可变变量之于数组

要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}
示例如下

$a=array("aa","bb","cc");//这的${$a[0]}会被浏览器解析成${aa}(aa就是$a[0]的值),也就是说,这样声明的变量,可以使用$aa取出来${$a[0]}='PHP是世界上最好的语言';echo $aa;echo "
"
;echo ${$a[0]};echo "
"
;${$a}[0]="hello world";echo ${$a}[0];?>

输出如下
在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_44368963/article/details/131565014

--结束END--

本文标题: web安全php基础_php常量及可变变量(魔术变量)

本文链接: https://www.lsjlt.com/news/418316.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作