淘先锋技术网

首页 1 2 3 4 5 6 7

一、引用变量

引用变量是指用不同的变量名去访问同一个变量内容,即两个不同的变量指向同一个内容。引用变量通过符号“&”进行定义。例如:

将变量$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’。