-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]);

由于您使用的是索引数组,因此您需要创建一些自定义的东西。这是我拼凑起来的一些对你有用的东西(注意它只适用于具有标量值的一维数组):

$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 回答