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 に答える