我有点迷失或心灵不能正常工作。我读了其他问题,但可以让我的工作。
我得到了这个数组:
Array
(
[89] => Array
(
[0] => 16
[1] => 2
)
)
我得到了这个:
Array
(
[84] => Array
(
[0] => 2
)
[83] => Array
(
[0] => 2
)
[87] => Array
(
[0] => 2
[1] => 3
)
[88] => Array
(
[0] => 2
)
[89] => Array
(
[0] => 2
)
[90] => Array
(
[0] => 2
)
)
我应该得到所有结果但是在关键字89上我应该得到第一个数组的值。
Array
(
[84] => Array
(
[0] => 2
)
[83] => Array
(
[0] => 2
)
[87] => Array
(
[0] => 2
[1] => 3
)
[88] => Array
(
[0] => 2
)
[89] => Array
(
[0] => 16
[1] => 2
)
[90] => Array
(
[0] => 2
)
)
数组合并不会工作:(。 在得到第一个数组的结果之后:
Array
(
[89] => Array
(
[1] => 2
)
)
结果数组应更新为一条记录。
我确定它为你的大师提供了1分钟的代码,但数组对我来说总是很痛苦。
由于
更新:如果我使用array_merge_recursive它不会保留我的密钥:
print_r(array_merge_recursive($array1,$array2));
Array
(
[0] => Array
(
[0] => 16
[1] => 2
)
[1] => Array
(
[0] => 2
)
[2] => Array
(
[0] => 2
)
[3] => Array
(
[0] => 2
[1] => 3
)
[4] => Array
(
[0] => 2
)
[5] => Array
(
[0] => 2
)
[6] => Array
(
[0] => 2
)
)
答案 0 :(得分:3)
array_merge_recursive
应该做的工作;查看文档以获取更多指示:http://www.php.net/manual/en/function.array-merge-recursive.php
修改强> 该函数的行为与我最初的想法不同,这是解决问题的函数的不同版本:
function array_merge_recursive_distinct(array &$array1, array &$array2) {
$merged = $array1;
foreach($array2 as $key => &$value) {
if(is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
$merged[$key] = array_merge_recursive_distinct($merged[$key], $value);
} else {
$merged[$key] = $value;
}
}
return $merged;
}
感谢php.net社区http://www.php.net/manual/en/function.array-merge-recursive.php#92195
答案 1 :(得分:0)
$newarray=array();
foreach(array_merge($array1,$array2) as $k=>$arr){
$newarray[$k]=array_merge($array1[$k],$array2[$k]);
}
答案 2 :(得分:0)
foreach($firstArr as $key=>$val){
if(in_array($key,$secondArray)){
$secondArray[$key] = $firstArr[$key];
}
}
试试这可能会对你有所帮助。
答案 3 :(得分:0)