$arr=[1,2,3,4];
        foreach ($arr as &$val) {
           echo $val;
        }
        //1,2,3,3
        foreach ($arr as $val) {
            echo $val;
        } 
        //1,2,3,3
求解这段代码为什么会这样?

解决方案 »

  1.   

    $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
    修改下
    应该是这样
      

  2.   

    引用数组元素可能会出现出乎意料的结果
    所以在循环结束后要销毁循环变量$arr=[1,2,3,4];
    foreach ($arr as &$val) {
      echo $val;
    }
    //1,2,3,4unset($val);
    foreach ($arr as $val) {
      echo $val;

    //1,2,3,4
      

  3.   

    数组元素引用容易出问题。所以地址引用时最好不要使用相同名称
    改这这样就可以了<?php
    $arr=[1,2,3,4];
            foreach ($arr as &$val) {
               echo $val;
            }
            //1,2,3,4
            foreach ($arr as $val1) { // 改为$val1
                echo $val1;
            } 
            //1,2,3,4
    ?>