此代码产生意外的输出:
$array=str_split("abcde");
foreach($array as &$item)
echo $item;
echo "\n";
foreach($array as $item)
echo $item;
output:
abcde
abcdd
if use &$item
对于第二个循环,一切正常。
我不明白这段代码将如何影响内容$array
。我可以认为这是一个隐含的unset($header)
会删除最后一行,但是 double 在哪里dd
来自?
这可以帮助:
$array=str_split("abcde");
foreach($array as &$item)
echo $item;
var_dump($array);
echo "\n";
foreach($array as $item) {
var_dump($array);
echo $item;
}
正如你在最后一次迭代后所看到的$item
指的是第 4 个元素$array
(e
).
之后你迭代数组并将第 4 个元素更改为当前元素。因此,在第二次循环的第一次迭代之后,它将是abcda
等abcdd
。在最后一次迭代中,您将第 4 个元素更改为第 4 个元素,如下所示d
to d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)