面试题
<?php$arr = array('a'=>'1', 'b'=>'2', 'c'=>'3');
foreach ($arr as &$v) {
var_dump($v);
}
echo '<br>';
foreach ($arr as $v) {
var_dump($v);
}
输出结果为什么是这样
string(1) "1" string(1) "2" string(1) "3"
string(1) "1" string(1) "2" string(1) "2" 本帖最后由 witer666 于 2014-10-10 22:33 编辑
这是PHP引用造成的 第一个foreach,最后一个引用把$val指向了$arr的第三个元素$arr。
第二个foreach每次都把元素赋给$val也就是$arr,所以$arr的最后一个赋值应该是$arr=$arr,最后一次$arr=$arr,一样的结果。所以$arr等于$arr 感觉考的是变量初始化问题
$v 应该被初始化,就会绕开这个坑了。 这种题如果纯从编写代码的人来说(半道出家这种)很容易答不对。 string(1) "1" string(1) "2" string(1) "3"
string(1) "1" string(1) "2" string(1) "2" 我添加了一个元素,执行后的结果是
string(1) "1" string(1) "2" string(1) "3" string(1) "4"
string(1) "1" string(1) "2" string(1) "3" string(1) "3" 为什么会出现这个问题,蛋疼啊。
结论,程序员可以不需要懂这些奇怪特性,但无论如何都要对自己写的代码做测试才能交单 很容易答不对。:hug:
页:
[1]