2012-11-29 63 views
1

我試圖將項目添加到PHP數組。我試圖添加到數組的項目可能與已存在於數組中的項目具有相同的索引。如何將項目添加到數組而不覆蓋數組中共享相同索引的項目?我想要類似的索引變成二維數組。將項目添加到包含類似索引的數組

//Original Array 
$array = array (
      "item1" => "data1", 
      "item2" => "data2", 
      "item3" => "data3" 
     ); 

//Add items to array 
$array["item1"] = "data2d"; 
$array["item5"] = "data4"; 

//Desired output 
array (
    "item1" => array("data1", "data4"), 
    "item2" => "data2", 
    "item3" => "data3", 
    "item4" => "data4" 
); 

我將如何實現所需的輸出?

+0

你期望的輸出是一個多維數組,所以我不知道我的理解。 – bozdoz

+0

如果一個項目被添加到一個數組並且索引已經存在,我希望索引包含一個值的數組,而不是被覆蓋。 – Sosumi

回答

1

嘗試下面的功能。該功能尚未經過測試,因此可能會出現一些語法錯誤。

function addArray(&$array, $key, $value) { 
    if (isset($array[$key])) { 
    if (!is_array($array[$key])) { 
     $tmp = $array[$key]; 
     $array[$key] = array($tmp, $value); 
    } 
    else { 
     array_push($array[$key], $value); 
    } 
    } 
    else { 
    $array[$key] = $value; 
    }  
} 

一樣使用

$array = array (
    "item1" => "data1", 
    "item2" => "data2", 
    "item3" => "data3" 
); 

//Add items to array 
addArray($array, 'item1', 'data2d'); 
+0

做得好,沒有測試。 – bozdoz