在PHP的foreach循环中增加数组元素?

这个问题在这里已经有了答案:

  • PHP'foreach'如何实际工作? 7个答案

  • Foreach在循环之前复制数组的结构(读取更多),因此您不能更改数组的结构并等待循环内的新元素。 你可以使用while不是foreach

    $arr = array();
    $arr['b'] = 'book';
    
    reset($arr);
    while ($val = current($arr))
        {
        print "key=".key($arr).PHP_EOL;
        if (!isset($arr['a']))
            $arr['a'] = 'apple';
        next($arr);
        }
    

    或者在foreach中使用ArrayIterator ,因为ArrayIterator不是数组。

    $arr = array();
    $arr['b'] = 'book';
    
    $array_iterator = new ArrayIterator($arr);
    
    
    foreach($array_iterator as $key=>$val) {
       print "key=>$keyn";
       if(!isset($array_iterator['a']))
          $array_iterator['a'] = 'apple';
    }
    

    我认为你需要存储数组元素继续狡猾

    尝试

    <?php
    $arr = array();
    $arr['b'] = 'book';
    foreach($arr as $key=>$val) {
       print "key=>$keyn";
       if(!isset($arr['a']))
          $arr['a'][] = 'apple';
    }
    print_r($arr);
    ?>
    

    为了能够直接修改循环内的数组元素,使用&前面的$ value。 在这种情况下,该值将通过引用进行分配。

    http://cz2.php.net/manual/en/control-structures.foreach.php

    链接地址: http://www.djcxy.com/p/53025.html

    上一篇: Increasing array elements while in foreach loop in php?

    下一篇: Unexpected behaviour of current() in a foreach loop