一、引用变量
引用变量是指用不同的变量名去访问同一个变量内容,即两个不同的变量指向同一个内容。引用变量通过符号“&”进行定义。例如:
将变量$var1
和变量$var2
指向同一个内容。引用后,变量$var1
和$var2
完全相同。
引用变量不同于一般的变量赋值。当用一个变量向另一个变量赋值时,例如:
这种赋值是将变量$var2
的值复制给$var1
,两个变量只在这条语句存在联系。赋值完成后,两个变量之间不再存在联系,$var1
的变化不会影响$var2
,同样$var2
的变化也不会影响$var1
。
而引用变量并不是复制一个值的变量给另一个变量,而是将两个变量指向同一内容,可以理解为将一个变量的地址传递给另一个变量。引用后,两个变量完全相同。完全相同是指两个变量是完全等价的,可以通过其中任一个变量访问、修改所指向的这个内容。对其所指向的同一内容的修改也会反映在两个变量值上。
二、可变变量
可变变量是指变量的名称并不是预先预定好的,而是动态地设置和使用。一般是指使用一个变量的值作为另一个变量的名称,所以可变变量又称变量的变量。
可变变量通过在一个变量名称前使用两个"$"符号实现,如下所示:
<?php
$str = "name";
$name = "John";
$out_str = $$str; //相当于$out = $name
$out_str = ${$str}; //功能与上一条语句相同,形式上更直观
?>
可变变量可以用在流程控制结构中,根据流程的不同状态设置不同的变量名。如下在for循环中动态设置变量名:
<?php
$var_name = "str"'
$str1 = "The first string";
$str2 = "The second string";
$str3 = "The third string";
for($i=0; $i<3; $i++){
echo ${$var_name.$i};
}
?>
三、静态变量
静态变量在函数内部定义,只局限于函数内部使用,但却具有和程序文件相同的生命周期,即静态变量一旦被定义,则在当期程序文件结束之前一直存在。
静态变量通过在变量前使用关键词static定义,格式如下:
使用静态变量示例:
<?php
/**
* Created by PhpStorm.
* User: wei19
* Date: 2019/2/26
* Time: 11:25
*/
//使用静态变量
function func1()
{
$num = 0;
echo $num;
$num++; //将num加1
}
function func2()
{
static $num = 0;
echo $num;
$num++;
}
//将哪两个函数分别执行20次
for ($i = 0; $i < 10; $i++) {
func1();
}
echo "<br>";
for ($i = 0; $i < 10; $i++) {
func2();
}
echo "<br>";
for ($i = 0; $i < 10; $i++) {
func1();
}
echo "<br>";
for ($i = 0; $i < 10; $i++) {
func2();
}
//输出结果为:
//0000000000
//0123456789
//0000000000
//10111213141516171819
在上述代码中,函数func1()
中定义了一个局部变量$num
,每次在执行func1()
时,变量$num
被赋初值0,然后使用echo
输出。虽然在函数最后将$num
加1,但是,每次func1()
执行结束后,该变量便不存在了,所以将func1()
连续执行10次得到的结果是连续输出10个‘0’。第二次连续执行10次仍然得到10个‘0’。