你能帮忙看看为什么没有将值赋给数组元素吗?
我的数组print_r是这样的:
Array ( [0] => Array ( [month] => May [year] => 2014 [count] => 0 ) [1] => Array ( [month] => Apr [year] => 2014 [count] => 0 ) [2] => Array ( [month] => Mar [year] => 2014 [count] => 0 ) [3] => Array ( [month] => Feb [year] => 2014 [count] => 0 ) [4] => Array ( [month] => Jan [year] => 2014 [count] => 0 ) [5] => Array ( [month] => Dec [year] => 2013 [count] => 0 ) [6] => Array ( [month] => Nov [year] => 2013 [count] => 0 ) [7] => Array ( [month] => Oct [year] => 2013 [count] => 0 ) [8] => Array ( [month] => Sep [year] => 2013 [count] => 0 ) [9] => Array ( [month] => Aug [year] => 2013 [count] => 0 ) [10] => Array ( [month] => Jul [year] => 2013 [count] => 0 ) [11] => Array ( [month] => Jun [year] => 2013 [count] => 0 ) )
我有一些代码应该添加一个值来计算。
foreach($archives as $archive){
if ($archive['month'] == date('M', strtotime($post['timestamp']))){
echo 'hello';
$archive['count']++;
}
}
输出'p>'hello',但是count没有收到值。我也尝试了这个,但它没有用。
$archive['count'] = 'hello';
感谢您的帮助。
答案 0 :(得分:2)
那是因为foreach
遍历数组的浅表副本。使用foreach($archives as &$archive)
引用原始数组的值。
答案 1 :(得分:1)
您应该使用&
直接修改foreach
循环中的数组元素:
foreach($archives as &$archive){
if ($archive['month'] == date('M', strtotime($post['timestamp']))){
echo 'hello';
$archive['count']++;
}
}
在这种情况下,$archive
将通过引用分配。 同样使用$archive
循环后,foreach
和最后一个数组元素的引用仍然存在,因此建议unset
使用它。
答案 2 :(得分:0)
您可以尝试在不&
使用下一个代码
foreach($archives as $key => $archive){
if ($archive['month'] == date('M', strtotime($post['timestamp']))){
echo 'hello';
$archives[$key]['count']++;
}
}