gpt4 book ai didi

php - 这两个数组迭代有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 13:43:04 27 4
gpt4 key购买 nike

我正在为高级考试学习 PHP。实践测试说第一次迭代比第二次好。我不明白为什么。他们都很好地迭代数组的内容。

//第一个:

 foreach($array as $key => &$val) { /* ... */ }

//第二个:

foreach($array as $key => $val) { /* ... */ }

最佳答案

The practice test said that the first iteration is better than the second.

这不是最好的建议。它们是用于不同工作的不同工具。

& 表示通过引用而不是副本来处理变量。

当你有一个变量引用时,它类似于 C 中的指针。访问变量让你访问原始变量的内存位置,允许你通过不同的标识符修改它的值。

// Some variable.
$a = 42;

// A reference to $a.
// & operator returns a reference.
$ref = &$a;

// Assignment of $ref.
$ref = "fourty-two";

// $a itself has changed, through
// the reference $ref.
var_dump($a); // "fourty-two"

关于 CodePad 的引用示例.

foreach 的正常行为是为关联的 block 创建一个副本。这意味着您可以自由地重新分配它,并且它不会影响数组成员(对于始终是引用的变量,例如类实例,情况不会如此)。

CodePad 上复制示例.

CodePad 上的类实例示例.

foreach 中使用引用有一些副作用,例如对迭代的最后一个值的悬空 $val 引用,以后可能会被意外修改和影响数组。

CodePad 上的悬挂引用示例.

关于php - 这两个数组迭代有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com