Wil*_*low 5 php arrays iteration loops object
我正在学习PHP进行高级考试.练习测试说第一次迭代比第二次迭代更好.我不明白为什么.他们都很好地迭代数组的内容.
// 第一:
foreach($array as $key => &$val) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
// 第二个:
foreach($array as $key => $val) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 10
练习测试说第一次迭代比第二次迭代更好.
这不是最好的建议.它们是不同工作的不同工具.
该&装置通过参考治疗变量,而不是一个副本.
当您有一个变量引用时,它类似于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"
Run Code Online (Sandbox Code Playgroud)
CodePad上的参考示例.
正常行为foreach是使副本可用于关联的块.这意味着你可以自由地重新分配它,它不会影响数组成员(对于总是引用的变量,例如类实例,情况不会这样).
在CodePad上复制示例.
CodePad上的类实例示例.
在a中使用引用foreach有一些副作用,例如$val对迭代的最后一个值的悬空引用,可以在以后偶然修改并影响数组.