0

我整天都在试图弄清楚这一点,但似乎无法解释或理解我想要实现的目标。假设我有 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 的所有方法,但我只是可以理解它。有没有人遇到过这个?我还没有找到的功能?

4

2 回答 2

0

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

于 2013-02-19T21:04:24.420 回答
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);
大批
(
    [2] => 仪表板
    [3] => 祝酒词
    [4] => 富
)
于 2013-02-19T21:05:00.403 回答