<?php //第2题: $arr = [1,2,3]; foreach($arr as &$v) { //nothing todo. } foreach($arr as $v) { //nothing todo. } var_export($arr); //output:array(0=>1,1=>2,2=>2),你的答案对了吗?为什么 ?>
作者:舒铭 链接:https://zhuanlan.zhihu.com/p/... 来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
请问为什么是这样呢?
foreach的问题,参考:
http://php.net/manual/en/cont...
标准的写法:在使用了“
&
”的foreach
之后,需要写一句unset($v);
释放掉临时的引用。该题的两个foreach的代码效果类似于以下代码:
这个面试题应该就是考察PHP的代码规范了,毕竟这种细节很容易被忽略,有时候确实会导致问题。