更新数组中的值

时间:2012-04-25 09:08:04

标签: php arrays loops

我正在尝试将每个数组的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;
}

2 个答案:

答案 0 :(得分:3)

它不会在$output内更新它,因为您要在该行的副本上设置审核计数。这样做:

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

这样您就可以对行进行操作,这与对原始行本身的操作具有相同的效果。有关详细信息,请参阅this page

另一种做同样的方法(可能更直观,但技术上更糟糕)将是

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

这样你再次对原始行进行操作 - 显然,因为你是使用它的键手动从数组内部获取它。

答案 1 :(得分:0)

不使用引用的替代方法:(&

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