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引用赋值。

     
     
     
     
  • 相关阅读:
    Webpack 从0开始
    MongoDB 从0开始
    Generator & Co
    Rem & Viewport
    Gulp 之二
    关于CSS动画几点要注意的地方
    移动端的click
    Gulp browserify livereload
    Javascript 设计模式笔记
    JS 继承
  • 原文地址:https://www.cnblogs.com/tianxintian22/p/6193246.html
Copyright © 2011-2022 走看看