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