3.2PHP变量的声明和引用赋值
下一篇: 3.3PHP变量的作用域
PHP变量声明
和很多语言不同,在PHP中使用变量之前不需要声明变量(PHP4之前需要声明变量),只需要为变量赋值即可。PHP 中的变量用一个美元符号($)后面跟变量名来表示。变量名是区分大小写的。
一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。 在此所说的字母是 a-z,A-Z,以及 ASCII 字符从 127 到 255(0x7f-0xff)。
变量赋值,是指给变量一个具体的数据值,对于字符串和数字类型的变量,可以通过"="来实现,格式为:
<?php $name=value;?>
对变量赋值时,要遵循变量命名规则。如下面的变量命名是不合法的:
<?php //变量名不能以数字字符开头 $333abc = "adfd"; //变量名不能以其它字符开头 $@split = "split"; ?>
而下面的变量是合法的:
<?php $word = "coin"; $_material = "roof"; ?>
除了直接给变量赋值外,还有两种方式可为变量声明和赋值,一种是变量间的赋值。变量间的赋值是指赋值后两个变量使用各自的内存,互不干扰。
例子1:
<?php //声明变量$str1 $str1 = "hello"; //用$str1初始化$str2 $str2 = $str1; $str1 = "nihao"; echo $str1."<br/>"; echo $str2; ?> 输出结果: nihao hello
PHP引用赋值
另一种是引用赋值,从php4开始,php引入"引用赋值"。引用的概念是,用不同的名字访问同一个变量内容。当改变其中一个变量值时,另一个也跟着发生变化。使用&符号来表示引用。
例子2:
<?php $name = "peter"; //使用引用赋值,$old_name已经赋值为peter $old_name = &$i; echo $old_name."<br/>"; //重新给$name赋值 $name = "sandy"; echo $old_name; ?> 上面结果输出: peter sandy
注意:引用和复制的区别在于:复制是将原变量内容复制下来,开辟一个新的内存空间来保存。而引用则是给变量的内容再起一个名字,两个是共用同一个内存的。
虽然在 PHP 中并不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值 – 布尔类型的变量默认值是 FALSE ,整形和浮点型变量默认值是零,字符串型变量(例如用于 echo 中)默认值是空字符串以及数组变量的默认值是空数组。
依赖未初始化变量的默认值在某些情况下会有问题,例如把一个文件包含到另一个之中时碰上相同的变量名。另外把 register_globals 打开是一个主要的安全隐患。使用未初始化的变量会发出 E_NOTICE 错误,但是在向一个未初始化的数组附加单元时不会。 isset()语言结构可以用来检测一个变量是否已被初始化。
下一篇: 3.3PHP变量的作用域