PHP在键上合并具有2维数组的1维数组,并保持所有键的唯一性和第2个数组的值

时间:2013-09-14 23:21:07

标签: php arrays array-merge

第一阵列:一维, 第二阵列:二维

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

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
)

2 个答案:

答案 0 :(得分:3)

请参阅this

如果要将第二个数组中的数组元素追加到第一个数组而不覆盖第一个数组中的元素而不重新编制索引,请使用+ array union运算符:

<?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
)

答案 1 :(得分:0)

您可以通过以下简单的方式实现这一目标:

$firstArray[27]=$2ndArray;

DEMO HERE

示例:

<?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
                )

        )

)