2017-02-19 86 views
2

我有一个数组数组,我试图通过foreach循环并将新项插入到子数组中。PHP foreach插入数组

采取以下

  $newarray = array(
        array("id"=>1,"quantity"=>2), 
        array("id"=>1,"quantity"=>2), 
        array("id"=>1,"quantity"=>2), 
      ); 

      foreach($newarray as $item){ 
       $item["total"] = 9; 
      } 
      echo "<br>"; 
      print_r($newarray); 

结果一看就给我没有新的“总”原始数组。为什么?

+0

http://stackoverflow.com/questions/16491704/php-insert-value-into-array-of-arrays-using-foreach – sumit

回答

3

因为$item不是$newarray[$loop_index]的引用:

foreach($newarray as $loop_index => $item){ 
    $newarray[$loop_index]["total"] = 9; 
} 
+0

我认为这是正确的答案。 10分钟后将接受它。 – codenoob

1

foreach()语句使$item作为数组:不作为真正的值(消耗数组)。这意味着它可以被读取但不能被改变,除非你重写了消费数组。您可以使用for()并像这样循环:see demo

注意:这一直回到范围,你应该看看。

+0

这解释了逻辑,现在感谢它是有道理的。 – codenoob