如何合并只有相同键的数组,而忽略不同的键



我是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
        )
)

相关内容

  • 没有找到相关文章

最新更新