PHP 中的变量用一个美圆符号后面跟变量名来表示。变量名是区分大小写的。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。$this 是一个特殊的变量,它不能被赋值。PHP 也提供了另一种方式给变量赋值:引用赋值,将一个 & 符号加到将要赋值的变量前(源变量)。php
未初始化的变量具备其类型的默认值 - 布尔类型的变量默认值是 FALSE,整形和浮点型变量默认值是零,字符串型变量默认值是空字符串或者数组变量的默认值是空数组。建议初始化,isset() 语言结构能够用来检测一个变量是否已被初始化。html
PHP 提供了大量的预约义变量。数组
任何用于函数内部的变量按缺省状况将被限制在局部函数范围内。例如:函数
1 <?php 2 $a = 1; /* global scope */ 3 4 function Test() 5 { 6 echo $a; /* reference to local scope variable */ 7 } 8 9 Test(); 10 ?>
这个脚本不会有任何输出,由于 echo 语句引用了一个局部版本的变量 $a,并且在这个范围内,它并无被赋值。。PHP 中全局变量在函数中使用时必须申明为global。this
1 <?php 2 $a = 1; 3 $b = 2; 4 5 function Sum() 6 { 7 global $a, $b; 8 9 $b = $a + $b; 10 } 11 12 Sum(); 13 echo $b; 14 ?>
以上脚本的输出将是“3”。在函数中申明了全局变量 $a 和 $b,任何变量的全部引用变量都会指向到全局变量。spa
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。.net
1 <?php 2 $a = 1; 3 $b = 2; 4 5 function Sum() 6 { 7 $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; 8 } 9 10 Sum(); 11 echo $b; 12 ?>
$GLOBALS 是一个关联数组,每个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之因此在全局范围内存在,是由于 $GLOBALS 是一个超全局变量。code
变量范围的另外一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此做用域时,其值并不丢失。htm
可变变量blog
一个可变变量获取了一个普通变量的值做为这个可变变量的变量名。
<?php $a = 'hello'; ?> <?php $$a = 'world'; ?> <?php echo "$a ${$a}"; ?>
两个变量都被定义了:$a 的内容是“hello”而且 $hello 的内容是“world”。
将可变变量用于数组,必须解决一个模棱两可的问题。当写下 $$a[1] 时,解析器须要知道是想要 $a[1] 做为一个变量呢,仍是想要 $$a 做为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种状况用 ${$a[1]},对第二种状况用 ${$a}[1]。