zoukankan      html  css  js  c++  java
  • php foreach循环引用的问题

    使用代码   在嵌套使用循环的时候 要注意循环引用的问题

    demo 

    $arr = [
                'a', 'b',
                'c', 'd',
            ];
            foreach ($arr as &$each){
                var_dump($arr);
            }
            foreach ($arr as $each){
                var_dump($arr);
            }
    

      

    输出结果

    array(4) {
      [
        0
      ]=>
      &string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      string(1) "d"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      &string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      string(1) "d"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      &string(1) "c"
      [
        3
      ]=>
      string(1) "d"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      &string(1) "d"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      &string(1) "a"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      &string(1) "b"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      &string(1) "c"
    }
    array(4) {
      [
        0
      ]=>
      string(1) "a"
      [
        1
      ]=>
      string(1) "b"
      [
        2
      ]=>
      string(1) "c"
      [
        3
      ]=>
      &string(1) "c"
    }

    原因 是

    php的foreach会在每次循环时,讲当前元素赋值给each, 然后进入循环体

    当foreach遍历完成后, each变量没有释放而是指向了arr数组中的最后一个元素, 所以在后面给each赋值时, 其实改变的时arr数组的最后一个元素  所以最后一个一直在引用赋值

  • 相关阅读:
    三级连动的下拉框(数据库版)吐血推荐
    行排菜单
    用AJAX制作天气预
    XmlHttp实战学习中....
    ASP+JS三级连动下拉框
    ASP连接11种数据库语法总结
    oa数据库设计
    RSS PUBData 把正常时间函数转成rss2.0的标准
    浮点数的表示和基本运算
    C#4.0新特性:可选参数,命名参数,Dynamic
  • 原文地址:https://www.cnblogs.com/guokefa/p/12341739.html
Copyright © 2011-2022 走看看