php - 合并数组保持键和递增

时间:2013-02-19 20:46:31

标签: php arrays multidimensional-array merge

我一直试图整天想出这个,但似乎无法解释,或者想要实现我想要实现的目标。假设我有2个阵列:

Array
(
    [1] => Array
        (
            [2] => Dashboard
        )

)

Array
(
    [1] => Array
        (
            [3] => Toasts
        )

)

我想要做的是合并2个数组,如下所示:

Array
(
    [1] => Array
        (
            [2] => Dashboard,
            [3] => Toasts
        )

)

但是,如果我有这样的事情:

Array
(
    [1] => Array
        (
            [2] => Dashboard
        )

)
Array
(
    [1] => Array
        (
            [2] => Toasts
        )

)

我不想放弃重写元素的值,但是像这样增加它

Array
(
    [1] => Array
        (
            [2] => Dashboard,
            [3] => Toasts
        )

)

我已经尝试了从数组合并,递归合并甚至是eval的所有内容,但我只是能够理解它。有没有人遇到过这个?我还没找到的功能?

2 个答案:

答案 0 :(得分:0)

您应该使用$array['indexname'] = 'value';。合并时array_merge()array_push()不保持具有相同/关联键的值,因为无法确定下一个键。

答案 1 :(得分:0)

也许不是一个真正的答案,只是一种逃避覆盖的方法;

$a1 = array(array(2 => 'Dashboard'));
$a2 = array(array(3 => 'Toasts'));
$a3 = array(array(3 => 'Foo'));
$array = array();
foreach (array_merge($a1, $a2, $a3) as $a) {
    foreach ($a as $i => $value) {
        if (!isset($array[$i])) {
            $array[$i] = $value;
        } else {
            $array[] = $value;
        }
    }
}
print_r($array);
Array
(
    [2] => Dashboard
    [3] => Toasts
    [4] => Foo
)