PHP变量
在PHP中声明变量必须是使用一个美元符号“$”后面跟变量名来表示,使用赋值符号“=”号给一个变量赋值。在声明变量时一定要按照一定规则,因为PHP中变量是严格区分大小写的,但是内置的函数和关键字以及自定义的函数是不区分大小写的。例如:echo,ECho,ECHO都是可以的。一个有效的变量名由字母或者下划线开头,后面任意数量的字母,数字,或者下划线。注:$this是一个特殊变量,它不能被赋值。
<?php
//变量名严格区分大小写
$z = 66; //小写z赋值 66
$Z = 99; //大写Z赋值 99
//关键字,函数不区分大小写。
echo $z; //输出66
ECho $Z; //输出99
var_dump($z); //输出int(66)
VAR_dump($Z); //输出int(99)
$this = 11; //给$this赋值会报错
PHP可变变量
可变变量是说,一个变量的变量名可以动态的设置和使用。
<?php
//PHP可变变量
$a = 'hello_'; //通常变量的定义形式。注:此变量值应遵循变量名的命名规则。
//可变变量是指可以将变量的值作为一个变量名来使用。
$$a = 'word !'; //等同 $hello_ = "word!"
echo $a; //输出hello_
echo $hello_; //输出word !
echo $$a; //输出word !
可变变量还可以用于数组,只不过存在一个歧义问题。如果你写成 $ $a[1],就需要标识$a[1]是一个数组元素,还是要把$ $a当成一个数组,[1]是这个数组的索引。解决这个问题
可以使用${$a[1]}或是${$a}[1]来区分。
访问类属性也可以通过可变属性名来访问。属性名从产生调用所在的变量访问范围内获取。
<?php
class test{
var $b = 'I am a variable.';
}
$t = new test();
$baa = 'b';
echo $t->$baa; //使用变量$baa的值作为属性名,等同于$t->b,输出I am a variable.
$arr = array('a','b','c');
echo $t->$arr[1]; //使用变量$arr[1]元素的值作为属性名,等同于$t->b,输出I am a variable.
可变变量产生的安全问题。
<?php
function test(){
echo 'test function';
}
$a = 'test';
$a(); //作为函数执行。
// "${${$test()}}"要是做为输入的内容的话,test()函数将被执行。
$b = "${${test()}}"; //注:此处为双引号,PHP解析变量。
变量的引用赋值
变量默认是传值赋值。那也就是说,当一个变量的值赋予给另一个变量时,改变其中一个变量的值,不会影响到另一个变量的值。
PHP中提供一种引用赋值的方式。引用赋值是指使用不同的名字访问同一个变量内容。与C语言中的指针不同,C语言中的指针中存储的是变量的内容中的地址。
<?php
$a = 'is a';
$b = &$a; //将变量$a的引用赋值给$b 注:只有有名字的变量才可以引用赋值。
echo $a; //输出is a
echo $b; //输出is a
$b = 'is b'; //改变变量$b的值,$a中的值也会改变。
echo $a;//输出is b
echo $b;//输出is b
unset($b); // 使用unset()则不会导致所有引用变量消失,只是变量$b和$a相互取消关联。
echo $a;//输出is b
PHP变量还是蛮有意思的,百度一圈,看了不少帖子,收获不少,才写了这一篇博客。呜,明天中秋节呢,中秋节快乐。晚安!