将项添加到包含类似索引的数组中

时间:2012-11-29 05:17:07

标签: php arrays multidimensional-array

我正在尝试将项添加到PHP数组中。我正在尝试添加到数组的项可能与已在数组中的项具有相同的索引。如何在不覆盖数组内共享相同索引的项目的情况下将项目添加到数组中?我希望类似的索引变成2D数组。

//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"
);

我如何实现所需的输出?

1 个答案:

答案 0 :(得分: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');