[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
)
研究数组推送等但不完全确定。
答案 0 :(得分: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;
}
答案 1 :(得分: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)
}
答案 2 :(得分: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;