【问题标题】:How to merge mutiple array in a single array如何将多个数组合并到一个数组中
【发布时间】:2020-02-02 12:17:33
【问题描述】:

我搜索了很多,但没有得到将数组合并到一个数组中的完美解决方案。 这些阵列是动态的(将来可能会增加 - 将超过 50 个)。所以为此我们必须使用count()for loops 来获取然后合并。

这是我试图在核心级别上解决的代码。请任何人告诉我如何接收单个数组中的所有值。

Array(
[0] => Array
    (
        [0] => 123
        [1] => 108
        [2] => 58
        [3] => 23
    )

[1] => Array
    (
        [0] => 93
        [1] => 94
        [2] => 95
        [3] => 172
        [4] => 30
    )

[2] => Array
    (
        [0] => 109
        [1] => 81
        [2] => 79
        [3] => 155       )

)`

我对结果的期望是:(我无法得到)

 Array
(
    [0] => 123
    [1] => 108
    [2] => 58
    [3] => 23
    [4] => 93
    [5] => 94
    [6] => 95
    [7] => 172
    [8] => 30
    [9] => 109
    [10] => 81
    [11] => 79
    [12] => 155
)

【问题讨论】:

  • 使用array_merge()
  • 甚至没有尝试?在这种情况下,您甚至可以使用不起眼的 foreach
  • 您对“完美解决方案”的定义是什么?
  • 这只是来自数据库的动态值的示例代码。请让我知道 mergeloop 中使用了哪种技术
  • 您已经知道这不会很好地扩展,因为您希望它在未来会增长,因此您可能应该在查询本身中进行合并并提出单行选择

标签: php arrays function arraylist multidimensional-array


【解决方案1】:

将 array_merge 与 splat 运算符一起使用,

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

array_merge — 合并一个或多个数组

Splat operator - Since PHP 5.6,您可以使用 splat 运算符 (...) 创建更简单的 variadic functions(参数数量未定义的函数)。

Demo

输出:-

Array
(
    [0] => 123
    [1] => 108
    [2] => 58
    [3] => 23
    [4] => 93
    [5] => 94
    [6] => 95
    [7] => 172
    [8] => 30
    [9] => 109
    [10] => 81
    [11] => 79
    [12] => 155
)

【讨论】:

  • 感谢@Rahul .. 这对我有用.. 非常感谢.. 让这变得非常简单。
  • 乐于助人。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
  • @Rahul 这太漂亮了!这是我第一次介绍 array_merge(...$arr); 和 splat 运算符。我将从现在开始自己实施。这很方便。谢谢
  • @freeek 我知道我也面临同样的问题;)
  • 哇,不知道 php 支持 splat 运算符。谢谢@Rahul!
【解决方案2】:

使用array_merge()

$a[0] = [1,2,3];
$a[1] = [4,5,6];
$a[2] = [7,8,9];
$newArr = [];

$newArr = array_merge($a[0], $a[1], $a[2]);
print_r($newArr);

假设你的数组会增长,你可以像这样使用 foreach :

$a[0] = [1,2,3];
$a[1] = [4,5,6];
$a[2] = [7,8,9];
$newArr = [];

foreach($a as $index){
   foreach($index as $item){
      array_push($newArr, $item);
   }
}

【讨论】:

    【解决方案3】:

    因为我使用了这种技术。我以一种简单的方式得到了答案。的array_flatten

    print_r(array_flatten($overall_arr)); 
    
    
    function array_flatten($array) {
    $return = array();
    foreach ($array as $key => $value) {
        if (is_array($value)){
            $return = array_merge($return, array_flatten($value));
        } else {
            $return[$key] = $value;
        }
    }
    return $return;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 2011-07-09
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 2017-10-04
      相关资源
      最近更新 更多