php地址符&
2021-05-18 19:29
标签:理解 引用 als 改变 了解 地址 输出 size dump 今天遇到一个很奇怪的问题 这段代码相信咋一看都会以为输出的是abc 可是结果是: 2 => &string ‘b‘ (length=1) 这个地方相当于给$v赋值为$arr[2] 原因在于&php的地址符 先来了解一下&的基本用法: 对于你这个foreach,也是同样的道理,你把循环单步拆开,就是这个样子: 循环运行到最后的时候,$v是$arr[2]的引用,所以就相当于这么个形式: 也就不难理解为什么var_dump会在最后的键值对上打印出一个&的符号了吧。 php地址符& 标签:理解 引用 als 改变 了解 地址 输出 size dump 原文地址:http://www.cnblogs.com/foolzhou/p/7735468.html$arr=[‘a‘,‘b‘,‘c‘];
foreach($arr as &$v){
}
foreach($arr as $v){
}
var_dump($arr);
unset($v);
var_dump($arr);
array (size=3)
0 => string ‘a‘ (length=1)
1 => string ‘b‘ (length=1)
2 => &string ‘b‘ (length=1)
array (size=3)
0 => string ‘a‘ (length=1)
1 => string ‘b‘ (length=1)
2 => string ‘b‘ (length=1)
重点在于
$b = $c = 1;
$a = &$b;
$a = 2;
echo "b=$b,c=$c\n";
$a = &$c;
$a = 100;
$a = 200;
echo "b=$b,c=$c\n";
unset($a);
$a = 500;
echo "b=$b,c=$c\n";
上面$a指定成$b的引用之后,除非再次指定成其他引用,或者unset($a),否则改变$a就是改变对应的$b的值。
$v = &$arr[0];
$v = &$arr[1];
$v = &$arr[2];
$arr[0] = a;
$arr[1] = b;
$v = &$arr[2];
$arr[2] = b;
var_dump($arr);
上一篇:ExtJs弹窗