Jar*_*ier 13 php arrays multidimensional-array
我操作数组很糟糕...给定这个结构我想删除顶级数组并将所有子集合并为一个平面数组:
Array
(
[0] => Array
(
[0] => Array
(
[0] => hey.com
)
[1] => Array
(
[0] => you.com
)
)
[1] => Array
(
[0] => Array
(
[0] => this.com
)
[1] => Array
(
[0] => rocks.com
)
)
)
Run Code Online (Sandbox Code Playgroud)
到期望的结构:
Array
(
[0] => hey.com
[1] => you.com
[2] => this.com
[3] => rocks.com
)
Run Code Online (Sandbox Code Playgroud)
速度至关重要 - 我们将处理成千上万的结果
goa*_*oat 25
$flat = call_user_func_array('array_merge', $arr);
Run Code Online (Sandbox Code Playgroud)
这将使阵列平整一个级别.它将采用您提供的样本输入,并生成您要求的所需输出.
确保
array_merge抱怨没有参数而得到一个php错误.对于那些想知道它是如何工作的人:
// with
$arr = [ [1,2,3], [4,5,6] ];
// call_user_func_array('array_merge', $arr) is like calling
array_merge($arr[0], $arr[1]);
// and with
$arr = [ [1,2,3], [4,5,6], [7,8,9] ];
// then it's like:
array_merge($arr[0], $arr[1], $arr[2]);
// and so on...
Run Code Online (Sandbox Code Playgroud)
如果您使用的是php 5.6+,则splat运算符(...)可以更具可读性:
$flat = array_merge(...$arr);
Run Code Online (Sandbox Code Playgroud)
Bab*_*aba 19
您可以使用 RecursiveArrayIterator
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$list = iterator_to_array($it,false);
var_dump($list);
Run Code Online (Sandbox Code Playgroud)
产量
array (size=4)
0 => string 'hey.com' (length=7)
1 => string 'you.com' (length=7)
2 => string 'this.com' (length=8)
3 => string 'rocks.com' (length=9)
Run Code Online (Sandbox Code Playgroud)