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 回答