常量
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是世界上最好的语言?>
常量与变量细节
- 常量和(全局)变量在不同的名字空间中。这意味着例如 HELLO 和 $HELLO是不同的。
define("HELLO", "PHP是世界上最好的语言");$HELLO='hello world!!!';echo HELLO;echo "
";echo $HELLO;?>
- 常量和变量不同,常量只能包含标量数据(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