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