PHP 将 1 维数组与键上的二维数组合并,并保持所有键唯一且来自 2nd 数组的值


PHP Merge 1 Dimensional Array with 2 Dimensional Array on keys and keep all keys unique and values from 2nd Array

第一个数组:一维,第二个阵列:二维

我想按键合并两个数组,保留键和第二个数组的值

1st Array (
[30] => 30
[28] => 28
[27] => 27
[16] => 16
)
2nd Array (
[27] => Array (
        [person_id] => 27
        [person_name] => Jazz Club
        [person_job] => 10
        [drink_price] => 5
       )
)
Expected result Array (
[30] => 30
[28] => 28
[27] => [27] => Array
       (
        [person_id] => 27
        [person_name] => Jazz Club
        [person_job] => 10
        [drink_price] => 5
       )
[16] => 16
)

看到这个

如果要将数组元素从第二个数组追加到第一个数组,同时不覆盖第一个数组中的元素,也不重新编制索引,请使用 + 数组联合运算符:

<?php
$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);
?>

将保留第一个数组中的密钥。如果两个数组中都存在数组键,则将使用第一个数组中的元素,而第二个数组中的匹配键元素将被忽略。

array(5) {
  [0]=>
  string(6) "zero_a"
  [2]=>
  string(5) "two_a"
  [3]=>
  string(7) "three_a"
  [1]=>
  string(5) "one_b"
  [4]=>
  string(6) "four_b"
}

您的解决方案应该是:

<?
$arr1 = array (
 30=> 30,
 28=> 28,
 27=> 27,
 16=> 16
);
$arr2 = array (
27 => array (
        person_id => 27,
        person_name => "Jazz Club",
        person_job => 10,
        drink_price => 5
       )
);
$newarr = $arr2 + $arr1;
print_r($newarr);
?>

给出以下结果

Array
(
    [27] => Array
        (
            [person_id] => 27
            [person_name] => Jazz Club
            [person_job] => 10
            [drink_price] => 5
        )
    [30] => 30
    [28] => 28
    [16] => 16
)

您可以通过以下简单行实现此目的:

$firstArray[27]=$2ndArray;

在这里演示

例:

<?php
$first[14]=14;
$first[16]=16;
$first[17]=17;
$first[21]=21;
$second[27]=Array ('person_id' => 27
        ,'person_name' => 'Jazz Club'
        ,'person_job' => 10
        ,'drink_price' => 5
       );
$first[27]=$second;
echo '<pre>';
print_r($first);
echo '</pre>';

输出:

Array
(
    [14] => 14
    [16] => 16
    [17] => 17
    [21] => 21
    [27] => Array
        (
            [27] => Array
                (
                    [person_id] => 27
                    [person_name] => Jazz Club
                    [person_job] => 10
                    [drink_price] => 5
                )
        )
)