Fre*_*zin 9 php arrays foreach pass-by-reference
此代码产生意外的输出:
$array=str_split("abcde");
foreach($array as &$item)
echo $item;
echo "\n";
foreach($array as $item)
echo $item;
Run Code Online (Sandbox Code Playgroud)
输出:
abcde
abcdd
Run Code Online (Sandbox Code Playgroud)
如果&$item用于第二个循环一切正常.
我不明白这段代码会如何影响内容 $array.我可以认为隐含unset($header)会删除最后一行,但双dd来自哪里?
zer*_*kms 12
这有助于:
$array=str_split("abcde");
foreach($array as &$item)
echo $item;
var_dump($array);
echo "\n";
foreach($array as $item) {
var_dump($array);
echo $item;
}
Run Code Online (Sandbox Code Playgroud)
正如您在最后一次迭代后所看到的那样,$item指的是$array(e)的第4个元素.
之后,迭代数组并将第4个元素更改为当前元素.因此,在第二次循环的第一次迭代之后,它将是abcda等等abcdd.而在最后一次迭代更改4元至4日,作为d对d
| 归档时间: |
|
| 查看次数: |
2287 次 |
| 最近记录: |