我是PHP新手,喜欢学习它。 我想合并两个或多个只有相同键的数组。并且忽略其键不在两个数组中的数组。像
这是First Array:
Array
(
[1] => Array
(
[111] => 36265
)
[2] => Array
(
[222] => 36265
)
[3] => Array
(
[333] => 36265
)
)
和第二个数组:
Array
(
[1] => Array
(
[444] => 36265
)
[2] => Array
(
[555] => 36265
)
[4] => Array
(
[666] => 36265
)
)
我希望我的结果如下:
Array
(
[1] => Array
(
[111] => 36265
[444] => 36265
)
[2] => Array
(
[222] => 36265
[555] => 36265
)
)
用键[3]&忽略其余数组[4] ....
所以请有人告诉我如何获得这个。我尝试“array_merge_recursive()”,但这个显示所有键。 提前谢谢。
答案 0 :(得分:1)
你必须遍历其中一个数组,检查另一个数组中是否存在当前键,如果存在,则合并它们,例如:
$output = array();
foreach ($array1 as $key => $value) {
if (array_key_exists($key, $array2)) {
$output[$key] = $value + $array2[$key];
}
}
答案 1 :(得分:0)
您可能正在寻找array_intersect_key
。
答案 2 :(得分:0)
你也可以使用foreacah循环并创建一个新的循环。在此循环中,您可以使用其中一个数组键来匹配它们。考虑这个例子:
$array1 = array( 1 => array(111 => 36265), 2 => array(222 => 36265), 3 => array(333 => 36265), ); $array2 = array( 1 => array(444 => 36265), 2 => array(555 => 36265), 4 => array(666 => 36265), );
$new_array = array();
foreach($array1 as $key => $value) {
if(isset($array2[$key])) {
$new_array[$key][key($array1[$key])] = reset($array1[$key]);
$new_array[$key][key($array2[$key])] = reset($array2[$key]);
}
}
echo '<pre>';
print_r($new_array);
echo '</pre>';
应该产生这样的东西:
Array
(
[1] => Array
(
[111] => 36265
[444] => 36265
)
[2] => Array
(
[222] => 36265
[555] => 36265
)
)