更新数组中的值


Updating Values in An Array

我正在尝试将每个数组上的 reviewCount 更新为 1。我很困惑为什么我的 foreach 循环不会更新它。任何帮助将不胜感激

$output:

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

它不会在$output内更新它,因为您正在对行的副本设置审阅计数。请改为执行以下操作:

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

这样,您就是在对行的引用进行操作,这与对原始行本身的操作具有相同的效果。有关更多详细信息,请参阅此页面。

另一种做同样事情的方法(可能更直观,尽管技术上"更糟")是

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

这样,您将再次对原始行进行操作 - 显然,因为您正在使用其键手动从数组内部获取它。

不使用

引用的替代方法:( &

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