PHP 引用变量名与 foreach 中 变量名 同名时发生的变化
<?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 )
引用时,多个变量共享一个内存地址,任意变量名值的变更,都会影响拥有同样引用关系的变量。