0

我正試圖動態生成多維數組,其中$key=>$value對的$value是另一個多維數組。鍵將通過選擇菜單動態生成(本身是動態生成的,所以我不知道鍵的名稱)。動態地將關聯多維數組添加到包含另一個關聯多維數組的數組中?

這是一個爲WordPress插件所以有下面的代碼一些WP功能:

$var1 = $_POST['var1']; 
$var2 = $_POST['var2']; 
if (get_option('option_name') != null) { 
    $option = get_option('option_name'); 
    $option[$var2] = array('sync'=>1,'setting1'=>$var2,'setting2'=>$var1); 
    update_option('option_name', $option[$var2]); 

} else { 
    $option = array(); 
    $option[$var2] = array('sync'=>1,'setting1'=>$var2,'setting2'=>$var1); 
    update_option('option_name', $option[$var2]); 
} 

基本上,這個「別人」的一部分,這表明get_option(「OPTION_NAME」)爲空或不設置,工作很好,在update_option函數被調用後,我得到:

Array 
    (
     [firstvar2] => Array 
      (
       [sync] => 1 
       [setting1] => firstvar2 
       [setting2] => firstvar1 
      ) 

    ) 

這正是我想要的。我遇到的問題是在第一個已經存在的時候添加一個附加的關聯數組。在「如果」條件的一部分,給我這個:

Array 
    (
     [sync] => 1 
     [setting1] => firstvar2 //(from the first run) 
     [setting2] => firstvar1 //(from the first run) 
     [secondvar2] => Array //(from the second run) 
      (
       [sync] => 1 
       [setting1] => secondvar2 //(from the second run) 
       [setting2] => secondvar1 //(from the second run) 
      ) 

    ) 

我怎樣才能得到這個代替?:

Array 
    (
     [firstvar2] => Array //first run 
      (
       [sync] => 1 //first run 
       [setting1] => firstvar2 //first run 
       [setting2] => firstvar1 //first run 
      ) 

     [secondvar2] => Array //second run 
      (
       [sync] => 1 //second run 
       [setting1] => secondvar2 //second run 
       [setting2] => secondvar1 //second run 
      ) 

    ) 
+2

你不能因爲你不能有2個相同的鍵值具有相同的值。它沒有認識 – RiggsFolly

+0

他們沒有相同的價值。我只是用作佔位符。它的$ _POST變量是什麼。我將編輯它,使其更容易混淆 –

+0

什麼是'update_option()'? – AbraCadaver

回答

0

您應該更新所有的$選項update_option('option_name', $option); 正在發生的事情基本上是你總是設置$選項等於$option[ $var2 ]

+0

當然!謝謝,我知道這肯定是一個簡單的錯誤。 –

+0

還獎勵謝謝。因爲現在我也不需要複雜的條件。只需下面的工作:$ option = get_option('option_name'); $ option [$ var2] = array('sync'=> 1,'setting1'=> $ var2,'setting2'=> $ var1); update_option('option_name',$ option); –

+0

肯定沒問題。是的,你可以簡單地get_option()? get_option():array(),不要忘記檢查它是否是一個數組,因爲它可以讓你陷入困境:) –