这道经典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),你的答案对了吗?为什么

?>


qq_笑_17
浏览 906回答 2
2回答

心有法竹

原因就是在第一次遍历时用的是&val引用赋值,而在foreach完之后,这个$val依然存在,是$arr[2]元素的引用当进入到第二次遍历时,在遍历到第一个元素时$val被赋值为1,相当于$arr[2]&nbsp;=&nbsp;1;遍历到第二个元素时$arr[2]&nbsp;=&nbsp;2;遍历到第三个元素时$arr[2]&nbsp;=&nbsp;$arr[2]所以最后的结果就成了1,2,2。
打开App,查看更多内容
随时随地看视频慕课网APP