我是PHP新手,喜欢学习它。我想合并两个或多个只有相同键的数组。忽略键不在两个数组中的数组。像
这是第一个数组:
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()",但这个显示了所有键。
你必须遍历其中一个数组,检查另一个数组中是否存在当前键,如果存在,则合并它们,例如:
$output = array();
foreach ($array1 as $key => $value) {
if (array_key_exists($key, $array2)) {
$output[$key] = $value + $array2[$key];
}
}
这是一个演示
您可能正在寻找array_intersect_key
。
您也可以使用foreach循环并创建一个新循环。在此循环中,您可以使用其中一个数组键来匹配它们。考虑这个例子:
$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
)
)