2012-11-29 90 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