【问题标题】:Merge all sub arrays into one [duplicate]将所有子数组合并为一个[重复]
【发布时间】:2015-02-02 22:08:50
【问题描述】:

我正在寻找一种方法将所有子数组合并到一个大数组中。

array (
    [0] = 
         [0] = '0ARRAY',
         [1] = '1ARRAY'
    [1] = 
         [0] = '2ARRAY',
         [1] = '3ARRAY'
)

进入

array (
    [0] = '0ARRAY', [1] = '1ARRAY', [2] = '2ARRAY', [3] = '3ARRAY'
)

不使用array_merge($array[0],$array[1]),因为我不知道实际上有多少个数组。所以我无法指定它们。

谢谢

【问题讨论】:

    标签: php arrays


    【解决方案1】:
    $new_array = array();
    foreach($main_array as $ma){
        if(!empty($ma)){
            foreach($ma as $a){
                array_push($new_array, $a);
            }
        }
    }
    

    您可以通过放置这些值来尝试:

    $main_array[0][0] = '1';
    $main_array[0][1] = '2';
    $main_array[1][0] = '3';
    $main_array[1][1] = '4';
    

    输出:

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

    【讨论】:

      【解决方案2】:

      如果只是两级数组,可以使用

      $result = call_user_func_array('array_merge', $array);
      

      只要 $array 不完全为空,它应该可以工作

      【讨论】:

      • 如果也找到最好的解决方案: $array 然后用作array_merge() function的列表或参数
      • 对空 $array 的修复:$result = call_user_func_array('array_merge', $array ?: [[]]);
      • php8 致命错误:未捕获的 ArgumentCountError:array_merge() 不接受未知的命名参数
      【解决方案3】:

      如果我理解了你的问题:

      php 5.6+

      $array = array(
        array('first', 'second'),
        array('next', 'more')
      );
      $newArray = array_merge(...$array);
      

      输出:

      array(4) { [0]=> string(5) "first" [1]=> string(6) "second" [2]=> string(4) "next" [3]=> string(4) "more" }
      

      示例:http://3v4l.org/KA5J1#v560

      php

      $newArray = call_user_func_array('array_merge', $array);
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2017-01-01
      • 2023-03-14
      • 2011-01-07
      • 2017-03-20
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多