11

我在 php 中有两个数组,如代码所示

<?php
$a=array('0'=>array('500'=>'1','502'=>'2'));
$b=array('0'=>array('503'=>'3','504'=>'5'));
print_r(array_merge($a[0],$b[0]));
?>

我需要合并两个数组。array_merge 函数成功合并了其中两个,但键值被更改。我需要以下输出

  Array
    (
        [0]=>Array(
           [500] => 1
           [502] => 2
           [503] => 3
           [504] => 5
         )
    )

我可以在 php 中使用什么函数,以便在不更改键值的情况下获得以下输出?

4

5 回答 5

21

文档中,示例#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"
}

因此,尝试:$a[0] + $b[0]

于 2013-09-09T08:19:31.063 回答
5

$a=array('0'=>array('500'=>'1','502'=>'2'));
$b=array('0'=>array('503'=>'3','504'=>'5'));

$c = $a + $b; //$c will be a merged array

查看这个问题的答案

于 2013-09-09T08:22:50.543 回答
0

尝试:

$final  = array();
$a=array('0'=>array('500'=>'1','502'=>'2'));
$b=array('0'=>array('503'=>'3','504'=>'5'));
foreach( $a as $key=>$each ){
    $final[$key]    = $each;
}
foreach( $b as $key=>$each ){
    $final[$key]    = $each;
}

print_r( $final );
于 2013-09-09T08:20:03.033 回答
0
$a=array('0'=>array('500'=>'1','502'=>'2'));
        $b=array('0'=>array('503'=>'3','504'=>'5'));
        $c = $a[0] + $b[0];
        print_r($c);

将打印:

Array ( [500] => 1 [502] => 2 [503] => 3 [504] => 5 )
于 2013-09-09T08:21:35.680 回答
0
Just write :  
   <?php
    $a = array(2=>'green', 4=>'red', 7=>'yellow',3=>'Green');
    $b = array(8=>'avocado');
    $d = $a+$b;

    echo'<pre>'; print_r($d);

    ?>

输出 :

Array
(
    [2] => green
    [4] => red
    [7] => yellow
    [3] => Green
    [8] => avocado
)
于 2016-08-30T10:26:38.063 回答