php foreach & 地址问题

    $arr=[1,2,3,4];
    foreach ($arr as &$val) {
       echo $val;
    }
    // 1,2,3,4
    foreach ($arr as $val) {
        echo $val;
    } 
    //1,2,3,3
阅读 4.9k
2 个回答
$arr=[1,2,3,4];
    foreach ($arr as &$val) {
       echo $val;
    }
    // 1,2,3,4
    unset($val);
    foreach ($arr as $val) {
        echo $val;
    } 
    //1,2,3,4
    
第一次循环后 $val = $arr[3] ;   
第二次循环:
$arr[3] = $val = $arr[0]; //1
$arr[3] = $val = $arr[1]; //2
$arr[3] = $val = $arr[2]; //3
$arr[3] = $val = $arr[3]; //3    $arr[3]赋值成3了

第一次foreach循环结束, $val指向的$arr数组的最后位置, 第二次循环改变了最后位置的值, 所以结果是1,2,3,3

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题