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;
}
4

2 に答える 2

3

行のコピー$outputにレビュー数を設定しているため、内部は更新されません。代わりにこれを行います:

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

このようにして、行への参照を操作しているため、元の行自体を操作するのと同じ効果があります。詳しくはこちらのページをご覧ください。

同じことを行う別の方法(技術的には「悪い」ですが、おそらくより直感的です)は次のとおりです。

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

このようにして、元の行を再び操作しています-明らかに、キーを使用して配列内から手動でフェッチしているためです。

于 2012-04-25T09:09:33.190 に答える
0

参照を使用しない別の方法: ( &)

foreach($output as $i => $row) {
   $output[$i]['reviewCount'] = 1;
}
于 2012-04-25T09:11:00.777 に答える