与array_chunk相反

Nie*_*sol 7 php arrays

array_chunk 使用块大小将数组拆分为多个数组以进行切割.

如果我有一个值数组数组,我只想要一个大数组值?

我可以使用array_merge,但这需要我枚举所有子数组,其中可能有一个变量号.

目前,我的解决方案是:

foreach($input as $tmp) {foreach($tmp as $val) {
    ...
}}
Run Code Online (Sandbox Code Playgroud)

但这有点混乱,只能运作,因为我想使用价值观.如果我想将数组存储在某个地方怎么办?

编辑:输入来自一组<select multiple>框,用于从多个类别中选择项目.每个项目都有一个全局唯一的(在项目中)ID,所以我只想将输入组合成一个数组并运行它.

输入可能如下所示:

[[4,39,110],[9,54,854,3312,66950],[3]]
Run Code Online (Sandbox Code Playgroud)

预期产量:

[4,39,110,9,54,854,3312,66950,3]
Run Code Online (Sandbox Code Playgroud)

要么:

[3,4,9,29,54,110,854,3312,66950]
Run Code Online (Sandbox Code Playgroud)

小智 5

虽然PHP没有内置的方法来扁平化数组,但是您可以使用array_reduce和来实现相同的目的array_merge。像这样:

$newArray = array_reduce($array, function ($carry, $item) {
    return array_merge($carry, $item);
}, []);
Run Code Online (Sandbox Code Playgroud)

这应该作为对的逆运算array_chunk


Vil*_*mev 5

代码:

$array = [[4,39,110], [9,54,854,3312,66950], [3]];
$array = call_user_func_array('array_merge', $array);

print_r($array);
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [0] => 4
    [1] => 39
    [2] => 110
    [3] => 9
    [4] => 54
    [5] => 854
    [6] => 3312
    [7] => 66950
    [8] => 3
)
Run Code Online (Sandbox Code Playgroud)


gus*_*tre 5

在这种情况下,将数组转换为参数列表的“...”运算符会非常方便(https://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-列表)。

的逆array_chunk()可能是这样的:

array_merge(...$chunks);
Run Code Online (Sandbox Code Playgroud)

例子:

print_r(array_merge(...[[0,1,2],[3,4,5]]));
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
   [0] => 0
   [1] => 1
   [2] => 2
   [3] => 3
   [4] => 4
   [5] => 5
)
Run Code Online (Sandbox Code Playgroud)


Exp*_*lls 4

摘自 PHP 文档array_values

/** 
 * Flattens an array, or returns FALSE on fail. 
 */ 
function array_flatten($array) { 
  if (!is_array($array)) { 
    return FALSE; 
  } 
  $result = array(); 
  foreach ($array as $key => $value) { 
    if (is_array($value)) { 
      $result = array_merge($result, array_flatten($value)); 
    } 
    else { 
      $result[$key] = $value; 
    } 
  } 
  return $result; 
}
Run Code Online (Sandbox Code Playgroud)

PHP 没有本地方法来展平数组.. 所以就这样吧。