【问题标题】:how to join two multidimensional arrays in php如何在php中连接两个多维数组
【发布时间】:2013-10-01 06:55:07
【问题描述】:

如何在 php 中连接两个多维数组?我有两个多维数组A和B,我需要将A和B连接起来形成一个新的数组C如下

$A = array( 
array("a1"=>1,"b1"=>2,"c1"=>"A"), 
array("a1"=>1,"b1"=>16,"c1"=>"Z"), 
array("a1"=>3,"b1"=>8,"c1"=>"A")); 

$B = array( 
array("a2"=>1,"b2"=>2,"b2"=>"A"), 
array("a2"=>1,"b2"=>16,"b2"=>"G"), 
array("a2"=>3,"b2"=>8,"b2"=>"A")); 

//连接A和B组成C

$C=array( 
array("a1"=>1,"b1"=>2,"c1"=>"A"), 
array("a1"=>1,"b1"=>16,"c1"=>"Z"), 
array("a1"=>3,"b1"=>8,"c1"=>"A"),
array("a2"=>1,"b2"=>2,"b2"=>"A"), 
array("a2"=>1,"b2"=>16,"b2"=>"G"), 
array("a2"=>3,"b2"=>8,"b2"=>"A"));

【问题讨论】:

  • 您要保留这两个数据还是选择唯一值?
  • 到目前为止你尝试过什么?

标签: php arrays multidimensional-array


【解决方案1】:

使用array_merge 函数,如下所示:

$C = array_merge($A, $B);
print_r($C);

当我运行上面的脚本时,它会输出:

Array ( 
    [0] => Array ( 
        [a1] => 1 
        [b1] => 2 
        [c1] => A 
        ) 
        [1] => Array ( 
            [a1] => 1 
            [b1] => 16 
            [c1] => Z ) 
        [2] => Array ( 
            [a1] => 3 
            [b1] => 8 
            [c1] => A 
        ) 
        [3] => Array ( 
            [a2] => 1 
            [b2] => A
        ) 
        [4] => Array ( 
            [a2] => 1 
            [b2] => G 
        ) 
        [5] => Array ( 
            [a2] => 3 
            [b2] => A 
        )
    ) 

在这里快速阅读:http://php.net/manual/function.array-merge.php

【讨论】:

    【解决方案2】:
    $C = array_merge($A, $B);
    

    应该可以解决问题 (docs)。

    【讨论】:

      【解决方案3】:

      您尝试过一些 PHP 数组函数吗?我认为其中一些工作:array_merge_recursive()array_merge()

      $array1 = array("farbe" => "rot", 2, 4);
      $array2 = array("a", "b", "farbe" => "grün", "form" => "trapezoid", 4);
      $result = array_merge($array1, $array2);
      print_r($result);
      

      【讨论】:

        【解决方案4】:

        你也可以这样做

        foreach($B as $key => $value){
            $C[$key] = array_merge($A[$key], $B[$key]);
        }
        

        【讨论】:

          【解决方案5】:

          您好,我遇到了同样的情况,我不得不在日历中显示重复的事件

          所以我使用了这个解决方案:-

           public function array_interlace() {
              $args = func_get_args();
              $total = count($args);
          
              if($total < 2) {
                  return FALSE;
              }
          
              $i = 0;
              $j = 0;
              $arr = array();
          
              foreach($args as $arg) {
                  foreach($arg as $v) {
                      $arr[$j] = $v;
                      $j += $total;
                  }
          
                  $i++;
                  $j = $i;
              }
          
              ksort($arr);
              return array_values($arr);
          }
          

          需要的数组输出

          $a = array('a', 'b', 'c', 'd');
          $b = array('a','e', 'f', 'g');
          $c = array('h', 'i', 'j');
          $d = array('k', 'l', 'm', 'n', 'o');
          
          print_r(array_interlace($a, $b, $c, $d));
          Array
          (
          [0] => a
          [1] => a
          [2] => h
          [3] => k
          [4] => b
          [5] => e
          [6] => i
          [7] => l
          [8] => c
          [9] => f
          [10] => j
          [11] => m
          [12] => d
          [13] => g
          [14] => n
          [15] => o
          )
          

          我发现这个解决方案合适..

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 1970-01-01
            • 1970-01-01
            • 2017-08-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多