变量
特性:php使用变量之前不需要声明。
1.变量范围
一般,声明的变量(不在函数内)范围为声明处到页面文件结束。不受<?php ?>标签和include和require引入文件的限制。其中,COOLIE和SESSION可以多页面中使用。
手册例子:
全局变量与局部变量范围简单理解
1 <?php 2 //global 关键字 3 $a = 1; 4 $b = 2; 5 6 function Sum() 7 { 8 global $a, $b; 9 $b = $a + $b; 10 } 11 12 Sum(); 13 echo $b; //输出 3 14 //超全局变量 $GLOBALS 15 $a = 1; 16 $b = 2; 17 18 function Sum() 19 { 20 $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; 21 } 22 23 Sum(); 24 echo $b; //输出 3 25 ?>
注意:在变量前面加上 global 的名称,就是定义该变量为全局变量。用这种方式,就不需使用 $GLOBALS 数组,也能让变量进入自行开发的函数中。
2.变量命名(标识符是变量的名称)
(1).长度任意,字母、数字、下划线组成
注意:不能以数字开头
(2).变量名严格区分大小写,而内置结构和关键字及类名函数名都不区分大小写。
1 <?php 2 //以下三个变量是三个不同的变量 3 $abc="111"; 4 $Abc="222"; 5 $ABC="333"; 6 //如echo 的大小写意义相同,都输出 444 7 echo "444"; 8 Echo "444"; 9 ECHO "444"; 10 ?>
(3).变量名称可以与函数名称相同(不推荐这样使用),但函数之间不能同名。
3.可变变量(动态改变一个变量的名称)
实例理解
1 <?php 2 $var="hello"; 3 $$var="world"; 4 echo $var; //输出 hello 5 echo $$var; //输出 world 6 echo $hello; //输出 world 7 ?>
4.变量的引用赋值——&
通常,再将一个变量的值赋给另一个变量的时候,先产生原变量的一个副本,然后再将它保存在内存的其他地方。
实例理解
1 <?php 2 $a=8; 3 $b=$a; 4 $a=9; //此时$a的值改变,而$b的值任然为 8 没有改变 5 6 //然而,引用赋值可以避免产生这样的副本。 7 8 $a=8; 9 $b=&$a; 10 $a=9; //此时$a和$b的值都改变为9 11 ?>
注意:引用像一个别名、指向,而不是一个指针。$a和$b都指向了内存的相同的地址。
(5).静态变量使用
函数在执行时所产生的变量,在函数结束时就消失了,有时因为程序的需要,函数在循环中,当不希望变量在每次执行完函数就消失的话,静态变量 (staticvariable) 就派上用场了
手册例子:
演示需要静态变量的例子
1 <?php 2 function Test() 3 { 4 $a = 0; 5 echo $a; 6 $a++; 7 } 8 9 //本函数没什么用处,因为每次调用时都会将 $a 的值设为 0 并输出 "0"。将变量加一的 $a++ 没有作用,因为一旦退出本函数则变量 $a 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $a 定义为静态的: 10 11 //使用静态变量的例子 12 13 function Test() 14 { 15 static $a = 0; 16 echo $a; 17 $a++; 18 } 19 //现在,每次调用 Test() 函数都会输出 $a 的值并加一。 20 ?>
再看一个比较实际的例子,它是处理表格的颜色,让隔行的颜色不同。
1 <?php 2 function TdBackColor() { 3 static $ColorStr; 4 if ($ColorStr=="808080") { 5 $ColorStr="c0c0c0"; 6 } else { 7 $ColorStr="808080"; 8 } 9 return($ColorStr); 10 } 11 echo "<table border=1>\n"; 12 for ($i=0; $i<10; $i++) { 13 $ColorStr=TdBackColor(); 14 echo "<tr><td bgcolor=".$ColorStr.">这是第".$i."行</td></tr>\n"; 15 } 16 echo "</table>"; 17 ?>
来源:https://www.cnblogs.com/gordon-ge/archive/2012/08/02/2619572.html