数组未分配值

时间:2014-05-11 13:49:16

标签: php arrays

你能帮忙看看为什么没有将值赋给数组元素吗?

我的数组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';

感谢您的帮助。

3 个答案:

答案 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']++;
        }
    }    
相关问题