-1
[0] => Array
        (
            [2148] => 2
            [2149] => 1
            [2150] => 0
        )
[1] => Array
        (
            [2148] => 4
            [2119] => 1
            [2130] => 0
        )

したがって、このようなものは素晴らしいでしょう:

[array_complete] => Array
        (
            [2148] => array(2,4)
            [2149] => 1
            [2150] => 0
            [2119] => 1
            [2130] => 0
        )

アレイプッシュなどを調べていますが、完全にはわかりません。

4

3 に答える 3

1

非常に簡単に言えば、連想配列を使用している場合は、array_merge_recursiveを使用します。ドキュメントは次のとおりです:http ://www.php.net/manual/en/function.array-merge-recursive.php

$array_complete = array_merge_recursive($array[0], $array[1]);

インデックス付き配列を使用しているため、カスタムのものを作成する必要があります。これが私が一緒に投げたもので、あなたのために機能します(スカラー値を持つ1次元配列に対してのみ機能することに注意してください):

$array_complete = array_merge_recursive_indexed($array[0], $array[1]);

function array_merge_recursive_indexed($a1, $a2) {
    $merged = array();
    $keys = array_merge(array_keys($a1), array_keys($a2));
    foreach ($keys as $key) {
        if (isset($a1[$key])) {
            if (isset($a2[$key])) {
                $merged[$key] = array($a1[$key], $a2[$key]);
            } else {
                $merged[$key] = $a1[$key];
            }
        } else if (isset($a2[$key])) {
            $merged[$key] = $a2[$key];
        }
    }
    return $merged;
}
于 2012-11-29T13:31:58.473 に答える
0

これを試して

$array1 = array(2148 => 2, 2149 => 1 , 2150 => 0, 1234 => 3);
$array2 = array(2148 => 4, 2149 => 1 , 2150 => 0, 123=> 3);

$res = array();


function merge($array1, $array2, array &$res = null) {
    $loop = false;
    if(null == $res) {
        $res = array();
        $loop = true;
    }
    foreach($array1 as $key => $val) {
        if(false == array_key_exists($key, $array2) || $array2[$key] == $val) {
            $res[$key] = $val;
        }
        else {
            if(array_key_exists($key, $res) && false == is_array($res[$key])) {
                $res[$key] = array($res[$key]);
            }
            $res[$key][] = $val;
        }
    }

    if(true === $loop) {
        return merge($array2, $array1, $res);
    }

    return $res;
}

print_r(merge($array1, $array2));exit;
于 2012-11-29T13:38:56.300 に答える
0

array_merge_recursive配列キーを数値以外のキーに変えた後に使用します。これをそのまま使用すると、競合するキーの番号が付け直されます。

全体的に:

$arr1 = array("a2148"=> 2, "a2149" => 1, "a2150" => 0);
$arr2 = array("a2148" => 4,"a2119" => 1, "a2130" => 0);
var_dump(array_merge_recursive($arr1,$arr2));

出力:

array(5) {
  ["a2148"]=>
  array(2) {
    [0]=>
    int(2)
    [1]=>
    int(4)
  }
  ["a2149"]=>
  int(1)
  ["a2150"]=>
  int(0)
  ["a2119"]=>
  int(1)
  ["a2130"]=>
  int(0)
}

これがデモンストレーションです:http://codepad.org/k8zvK0nL

于 2012-11-29T13:32:51.687 に答える