【问题标题】:Merge multiple arrays from one array从一个数组合并多个数组
【发布时间】:2012-11-12 18:10:31
【问题描述】:

如何从一个数组变量合并多个数组?假设我在 one 数组变量中有这个

这些都在一个变量中..
$array = array(array(1), array(2));

Array
(
    [0] => 1
)
Array
(
    [0] => 2
)

如何解决这个问题

Array
(
   [0] => 1
   [1] => 2
)

【问题讨论】:

    标签: php arrays function merge


    【解决方案1】:

    $resultArray = array_merge ($array1, $array1);

    $result = array();
    foreach ($array1 as $subarray) {
        $result = array_merge($result, $subarray);
    }
    
    // Here it is done
    

    值得一读: http://ca2.php.net/manual/en/function.array-merge.php

    递归:

    http://ca2.php.net/manual/en/function.array-merge-recursive.php

    【讨论】:

    • 只有一个数组..只有$array1,里面有多个数组,如何合并?
    • 这几乎解决了它,但是做一个循环和东西仍然有点复杂和烦人,难道没有一个函数可以做到这一点吗?
    • ca2.php.net/manual/en/function.array-merge-recursive.php 但它可能无法完全按照您的意愿工作
    • 我不确定它到底有什么作用,但他们的示例也有 2 个数组,有点相同?举个例子
    • @Osa 如果你真的讨厌循环,你可以应用 array_merge 到数组中。看我的回答。
    【解决方案2】:

    array_merge 是您所需要的。

    $arr = array_merge($arr1, $arr2);
    

    编辑:

    $arr = array_merge($arr1[0], $arr1[1]);
    

    【讨论】:

    • 只有一个数组..只有$arr1,里面有多个数组,如何合并?
    • 如果$arr1中有两个以上的元素怎么办?
    【解决方案3】:
    $arr1 = array(0=>1);
    $arr2 = array(0=>2);
    
    $merged = array_merge($arr1,$arr2);
    print_r($merged);
    

    【讨论】:

      【解决方案4】:

      array_merge 可以完成这项工作

      $array_meged = array_merge($a, $b);
      

      评论后

      如果你可以使用固定索引:

      $array_meged = array_merge($a[0], $a[1]);
      

      更通用的解决方案:

      $array_meged=array();
        foreach($a as $child){
        $array_meged += $child;
      }
      

      【讨论】:

        【解决方案5】:

        这是 javascript Function#apply 的 PHP 等效项(从数组生成参数列表):

        $result = call_user_func_array("array_merge", $input);
        

        演示:http://3v4l.org/nKfjp

        【讨论】:

        • 嗨@Jan 我有一个类似的数组,我尝试使用您的示例代码进行合并。这是一个嵌套数组,所以我在将变量中的数组合并时遇到了一些麻烦。这是每个数组的外观pastebin.com/rF8HUDS2 你介意告诉我如何使用这些数组实现你的代码。
        • @Anagio 因为您的顶级答案是只有 result 键的单元素数组,所以您需要首先将每个元素 map 到其唯一元素。在 5.3+ 中你可以写 $input = array_map(function(x){return x['result']}, $input)
        【解决方案6】:

        这可能有效:

        $array1 = array("item1" => "orange", "item2" => "apple", "item3" => "grape");
        $array2 = array("key1" => "peach", "key2" => "apple", "key3" => "plumb");
        $array3 = array("val1" => "lemon");
        
        $newArray = array_merge($array1, $array2, $array3);
        
        foreach ($newArray as $key => $value) {
          echo "$key - <strong>$value</strong> <br />"; 
        }
        

        【讨论】:

        • 那有什么用?
        【解决方案7】:

        PHP 5.6 开始,您可以使用 variadics参数解包

        $result = array_merge(...$input);
        

        call_user_func_array 快 3 倍。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-11-11
          • 2017-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-08
          相关资源
          最近更新 更多