2012-06-15 60 views
0

我是新來的PHP,我不知道爲什麼這是行不通的。有人能幫助我嗎?謝謝!我的代碼如下:php array_push行爲

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

是否缺少一個'$'? – Ross

+0

耶對不起錯字!我的代碼中有$。 –

+0

@MarsJ你得到空,因爲這兩個數組都是空的 – mgraph

回答

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); 
     } 
    }