【问题标题】:easier way to flatten or merge php array than this?比这更简单的方法来展平或合并 php 数组?
【发布时间】:2012-02-27 17:52:39
【问题描述】:

我有一个数组数组。

例如:

$array[] = array("1", "2", "3");
$array[] = array("5", "9", "ok");
$array[] = array("test", "ok", 8");

将其展平/合并为一个数组的最简单方法是什么?

结果应该是:

$array = array("1", "2", "3", "5", "9", "ok", "test", "ok", "8");

有没有比执行以下操作更容易/更简单的方法来获得此结果?

$result = array();
foreach ($array as $subarray) {
  foreach ($subarray as $value) {
    array_push($result, $value);
  }
}

【问题讨论】:

标签: php arrays merge flatten


【解决方案1】:

从 PHP 5.6 开始,您可以使用 ... 运算符来提供参数:

array_merge(...$array)

旧答案

按照建议,您可以为此使用array_merge。如果您不知道 $array 中有多少个值,您可以使用以下内容:

call_user_func_array('array_merge', $array);

【讨论】:

  • 你也可以写array_merge(...$array)来代替上面的代码。 3个点需要完全像这样。它被称为variadic functions operator
  • @gogowitsch,下次继续并通过添加更多详细信息来编辑答案:)
  • array_merge($array1,...$array2);帮助我,谢谢。
【解决方案2】:

array_merge 符合要求。

$result = array_merge($array[1], $array[2], $array[3], ..., $array[N]);

或者如果你坚持迭代:

$result = array();
foreach ($array as $nested) {
     $result = array_merge($result, $nested);
}

【讨论】:

  • +1 Juicys 可能会更短,但这也没有任何问题,因此无需投票。
  • @Yoshi,确定这是正确的,顺便说一句,这是第一个答案。我的很可能是这个的补充;)
  • @JuicyScripter 希望你不认为我的意思是让你成为反对者。只是想说明我投票的理由。因为有时看到这样的答案无缘无故地被否决,会让人有些沮丧。
猜你喜欢
  • 1970-01-01
  • 2015-06-16
  • 2016-12-12
  • 2017-09-14
  • 1970-01-01
  • 2022-01-25
  • 2023-03-08
相关资源
最近更新 更多