PHP参考
介绍
在PHP中,引用可通过不同的名称访问相同的变量内容。它们与C/C++中的指针不同,因为无法使用它们执行算术运算。在C/C++中,它们是实际的内存地址。相反,在PHP中,它们是符号表别名。在PHP中,变量名称和变量内容不同,因此相同的内容可以具有不同的名称。通过在原始变量前加上前缀和符号来创建引用变量。因此,$b=&$a将意味着$b是$a的引用变量。
通过引用分配
在下面的示例中,两个变量引用相同的值
示例
<?php $var1=10; $var2=&$var1; echo "$var1 $var2\n"; $var2=20; echo "$var1 $var2\n"; ?>
输出结果
一个值的变化也将反映在另一个
10 10 20 20
如果通过引用分配,传递或返回未定义的变量,则将创建该变量。将引用分配给在函数内部声明为全局变量的变量,该引用仅在函数内部可见。当在foreach语句中使用引用将值分配给变量时,引用也会被修改。
示例
<?php $arr=[1,2,3,4,5]; $i=&$ref; foreach($arr as $i) echo $i*$i, "\n"; echo "ref = ". $ref; ?>
输出结果
$ref的值存储数组中最后一个元素的值
1 4 9 16 25 ref = 5
在下面的示例中,数组元素是对数组初始化之前声明的各个变量的引用。如果元素被修改,变量的值也会改变
示例
<?php $a = 10; $b = 20; $c=30; $arr = array(&$a, &$b, &$c); for ($i=0; $i<3; $i++) $arr[$i]++; echo "$a $b $c"; ?>
输出结果
$a,$b和$c的值也会增加
11 21 31