2017-02-19 5 views
2

私は配列の配列を持っています。ループをforeachして新しい配列をサブ配列に挿入しようとしています。PHP foreach insert array

はちょうど新しい「合計」せずに私の元の配列を与える結果

  $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