PHP 在 foreach 中按引用传递
在 PHP 中,按引用传递允许函数或方法修改原始变量而不是副本。在 foreach 循环中使用时,如果不完全理解,可能会导致意外行为。
输出说明:零一二二
在提供的代码中:
$a = array ('zero','one','two', 'three'); foreach ($a as &$v) {} foreach ($a as $v) { echo $v.PHP_EOL; }
第一个 foreach 循环使用引用传递 (&) 直接修改数组元素。这意味着当$v的值改变时,它直接影响$a数组中相应的元素。
在第一个循环中,每个元素的值被设置为null。这是因为,当在按引用传递循环中未赋值时,数组中相应的值将设置为 null。
在第二个循环中,输出显示每个元素的当前值,从来自修改后的无效数组。前三个元素保持初始化时分配的值。然而,第四个元素 ($a[3]) 在第一个循环中被设置为 null。
因此,第二个循环的后续迭代将打印原始值(零、一和二),后跟 $a[3] 的空值。在最后一次迭代中, $v 的值仍然指向 $a[3] 的 null 值,这导致 'two' 被重复作为输出,因为它是 null 化之前的最后一个赋值。
以上是为什么带有引用传递的 PHP 的'foreach”会产生意外的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!