zoukankan      html  css  js  c++  java
  • php foreach引用赋值

      在写代码时发现php foreach引用赋值会导致意外的行为。

      代码示例:

      <?php 
            $arr = array('a','b','c');
            foreach($arr as $k=>&$v) 
            {
            }        
            print_r($arr);
     
            foreach($arr as $k=>$v)
            {     
            }        
            print_r($arr);
       ?> 
        输出结果:
        Array ( [0] => a [1] => b [2] => c ) Array ( [0] => a [1] => b [2] => b )
     
        经过查找资料,找到原因。其实,第一个foreach结束后,数组$arr最后一个元素$v的引用仍然保留。在进行第二个foreach循环时,实际上是对数组$arr的第三个元素的三次赋第二个foreach开始执行时,每次数组$arr的变化如下:
        第一次: Array ( [0] => a [1] => b [2] => a ) 
        第二次: Array ( [0] => a [1] => b [2] => b ) 
        第三次: Array ( [0] => a [1] => b [2] => b ) 
        所以会有最后的输出结果。
     
        为了避免这种情况,可以在第一个foreach结束后,取消掉引用:unset($v)。但是,为了避免不可预期的结果出现,慎用foreach引用赋值。

     
     
     
     
  • 相关阅读:
    学习mongodb简单安装、连接数据库、增删改查
    第三方模块glup学习
    npm 借助第三方模块nrm切换淘宝源
    nodemon 学习
    bootstrap和ie浏览器兼容性问题怎么解决?
    所得税
    债务重组
    非货币性资产交换
    政府补助
    收入 费用 和利润
  • 原文地址:https://www.cnblogs.com/tianxintian22/p/6193246.html
Copyright © 2011-2022 走看看