【问题标题】:Merging two arrays without changing key values php合并两个数组而不更改键值php
【发布时间】:2013-09-12 16:43:15
【问题描述】:

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

【问题讨论】:

  • @Vatev 感谢您的解决方案 $c[0]=$a[0]+$b[0];给出预期的数组 $c.第一次,我在数组中看到了“+”运算符的用法。

标签: php arrays


【解决方案1】:
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
)

【讨论】:

    【解决方案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

    【讨论】:

      【解决方案3】:
      $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】:

        试试:

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

        【讨论】:

          【解决方案5】:

          来自the documentation,示例#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]

          【讨论】:

          • 有趣的是 array_merge 在我的 DEV 环境 (XAMPP PHP 5.6.24) 与 TEST 环境 (PHP 5.5.9-1ubuntu4.20) 产生不同的输出,而 DEV 产生与 + 符号的结果相同,并且 TEST 产生 array_merge 如文档中所述。谢谢。
          猜你喜欢
          • 2019-04-12
          • 1970-01-01
          • 1970-01-01
          • 2014-05-08
          • 2019-12-03
          • 2021-11-20
          • 2010-09-14
          相关资源
          最近更新 更多