PHP 引用变量名与 foreach 中 $val 同名时发生的变化
<?php
$arr = ['a', 'b', 'c', 'd'];
//引用下标 2
$v = & $arr[2];
echo "<pre>";
// 引用变量$v 与 foreach中的赋值变量$v相同
foreach ($arr as $v)
{
echo '当前$v=' . $v . "\n";
print_r($arr);
echo "\n";
}
凭直觉想一下,$v会输出什么?abcd?是不是不会这么简单?
输出结果
当前$v=a
Array
(
[0] => a
[1] => b
[2] => a //注意此处,此时由于$v与$arr[2]为引用关系,当$v值发生变化后,$arr[2]同样发生变化
[3] => d
)
当前$v=b
Array
(
[0] => a
[1] => b
[2] => b //同理
[3] => d
)
当前$v=b
Array
(
[0] => a
[1] => b
[2] => b //同理
[3] => d
)
当前$v=d
Array
(
[0] => a
[1] => b
[2] => d //同理
[3] => d
)
- 引用时,多个变量共享一个内存地址,任意变量名值的变更,都会影响拥有同样引用关系的变量。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: