合并两个数组而不更改键值php

时间:2013-09-09 08:15:27

标签: php arrays

我在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中使用什么功能,以便在不更改键值的情况下获得以下输出?

5 个答案:

答案 0 :(得分:14)

来自the documentation,示例#3:

  

如果要将第二个数组中的数组元素追加到第一个数组而不覆盖第一个数组中的元素而不重新编制索引,请使用+ 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"
}

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

答案 1 :(得分:2)

$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

see the answer for this question

答案 2 :(得分: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 );

答案 3 :(得分: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 )

答案 4 :(得分: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);

    ?>

out put:

Array
(
    [2] => green
    [4] => red
    [7] => yellow
    [3] => Green
    [8] => avocado
)