php array_push行为

时间:2012-06-15 17:58:48

标签: php arrays multidimensional-array array-push

我是php的新手,我不确定为什么这不起作用。有人能帮助我吗?谢谢!我的代码如下:

if (!$this->_in_multinested_array($over_time, $request_year)) {
            $temp = array('name'=>$request_year, 'children'=>array());
            array_push($over_time, $temp);
        }

        if (!$this->_in_multinested_array($over_time, $request_month)) {

            $child = array('name'=>$request_month, 'children'=>array());

            foreach ($over_time as $temp) {

                if ($temp['name'] == $request_year) {
                   array_push($temp['children'], $child);
                }
            }
        }

每当我检查此代码的结果时,temp['children']数组总是为空,即使它不应该是。

1 个答案:

答案 0 :(得分:2)

此循环中的每个$ temp都是副本:

    foreach ($over_time as $temp) {

        if ($temp['name'] == $request_year) {
           array_push($temp['children'], $child);
        }
    }

您想要更改数组而不是制作副本,因此您必须使用引用:

    foreach ($over_time as &$temp) {

        if ($temp['name'] == $request_year) {
           array_push($temp['children'], $child);
        }
    }