2013-05-10 62 views
1

我一直在尋找如何做到這一點,有點難倒。 我的陣列如下:有條件地添加項目到多維數組

$returndata->setup_array = array(
      'General'  => array(
        'Main Details'   => 'setup/maindets', 
        'Directories'   => 'directories', 
        'Extension Allocation' => 'xtnallo', 
        'List Holidays'   => 'setup/holidays', 
        'List Group VM'   => 'groupvm', 
        'Conference Rooms'  => 'confroom' 
        ), 
      'Offices'  => array(
        'List Offices'   => 'iptoffices' 
        ), 
      'Users'   => array(
        'List Users'   => 'iptusers' 
        ), 
      'Phones'  => array(
        'List Phones'   => 'iptphones' 
        ), 
      ); 

但是我有1個項目,關於需要被加入到listin一般陣列的某些條件(由用戶會話觸發)。該部分是'View Details => setup/viewdetails'。我嘗試過數組推送(可能不正確),但是這會將該項添加爲主數組末尾的另一個數組。

我想/需要它這樣的工作:

$returndata->setup_array = array(
     'General'  => array(
       $viewdets 
       'Main Details'   => 'setup/maindets', 
       'Directories'   => 'directories', 
       'Extension Allocation' => 'xtnallo', 
       'List Holidays'   => 'setup/holidays', 
       'List Group VM'   => 'groupvm', 
       'Conference Rooms'  => 'confroom' 
       ), 
     'Offices'  => array(
       'List Offices'   => 'iptoffices' 
       ), 
     'Users'   => array(
       'List Users'   => 'iptusers' 
       ), 
     'Phones'  => array(
       'List Phones'   => 'iptphones' 
       ), 
     ); 

$viewdets = "'View Details'   => 'setup/viewdetails'"; 

,仍然被視爲一個正常運作的陣列用作菜單。

+0

也許創建安裝陣列只是把它叫做$默認值。然後根據你的邏輯構建一個數組構造並最終使用'$ returndata-> setup_array = array_merge_recursive($ userData,$ defaults)的鏡像;'希望這會給你帶來一些愛。 – Orangepill 2013-05-10 15:51:22

回答

2
$returndata->setup_array['General']['View Details'] = 'setup/viewdetails' 

乾杯裏克!

+1

關閉。應該是$ returndata-> setup_array ['General'] ['View Details'] ='setup/viewdetails' – 2013-05-10 15:48:49

+0

Ahhh做得好Rick! – 2013-05-10 15:49:42

+1

爲了清晰起見,您應該將正確的數組路徑編輯到答案Alex中。我已經贊成它,因爲它顯然是最簡單的答案,用最少的代碼獲得相同的結果。 – 2013-05-10 15:54:27

0

您可以使用ArrayObject有數組作爲參考:

$a = new ArrayObject(); 

$b = array(
    "a" => $a 
); 

$a[] = "foo"; 
print_r($b); 
0

你打了什麼電話array_push()?你有沒有試過

array_push($returndata->setup_array['General'], $viewdets); 

你需要將變量添加到你想要它存在的數組的特定深度。看看這裏array_push,還有一個簡短的語言語法,避免了函數調用:

$returndata->setup_array['General'][] = $viewdets;