2012-04-25 12 views
1

各配列のreviewCountを1に更新しようとしています。私のforeachループがそれを更新しない理由が混乱しています。任意の助けいただければ幸いです配列の値を更新する

$出力:

Array(
    [1] => Array(
     [category] => Category 1 
     [country] => USA 
     [date] => 2012-04-07 23:50:49 
     [name] => Product 1 
     [reviewCount] => 
    ) 
    [2] => Array(
     [category] => Category 1 
     [country] => USA 
     [date] => 2012-04-07 23:50:49 
     [name] => Product 1 
     [reviewCount] => 
) 

コード:あなたがのコピーのレビュー数を設定しているので、

foreach ($output as $row) { 
    $row['reviewCount'] = 1; 
} 

答えて

3

それは$output内でこれを更新しません行。

foreach ($output as &$row) { // <-- added & 
    $row['reviewCount'] = 1; 
} 

この方法では、元の行自体と同じ効果があります。詳細はthis pageを参照してください。

foreach ($output as $key => $row) { 
    $output[$key]['reviewCount'] = 1; 
} 

あなたは再び元の行上で動作しているこの方法だろう(「より悪い」技術が、おそらくより直感的に)同じことを行う別の方法 - あなたがからそれをフェッチしているので、明らかにそのキーを使用して手動で配列内に移動します。参照を使用していない

+0

私はそれが "より悪い" であるか、興味がありますか?あなたは詳細を教えていただけますか? :) –

+0

@NiftyDude:もう1回ルックアップを実行します。それほど問題にはならないので、悪化するほどです。 – Jon

0

代替方法:(&

foreach($output as $i => $row) { 
    $output[$i]['reviewCount'] = 1; 
} 
関連する問題