这道经典PHP面试题有点不懂
本文介绍了这道经典PHP面试题有点不懂的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
<?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的代码效果类似于以下代码:
$v = &$arr[0];
$v = &$arr[1];
$v = &$arr[2];
//var_dump($arr);
//请注意这个时候的$v是和$arr[2]等价的
$v = $arr[0];
$v = $arr[1];
$v = $arr[2];
//var_dump($arr);
这个面试题应该就是考察PHP的代码规范了,毕竟这种细节很容易被忽略,有时候确实会导致问题。
这篇关于这道经典PHP面试题有点不懂的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文