1

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

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

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

2 回答 2

3

看到这个

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

<?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
)
于 2013-09-14T23:26:54.700 回答
0

您可以通过这个简单的行来实现这一点:

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

        )

)
于 2013-09-14T23:25:33.570 回答