我想我把标题吹走了。但这就是我真正需要的:
我有一个这样的数组:
array(
'0' => array( 'the','data','i'),
'1' => array( 'need', 'is', 'this'),
'2' => array( 'complete', 'sentence')
);
我想成为:
array(
'the','data','i','need','is','this','complete','sentence'
);
什么是随机的:
答案 0 :(得分:2)
由于您提出的问题似乎不是递归展平的一般问题,因此即使其他SO问题解决了一般情况,也可能值得给出简单的解决方案作为答案。
你需要的只是
call_user_func_array("array_merge", $a);
要在完整的脚本中查看:
<?php
$a = array(
array( 'the',' data', 'i' ),
array( 'need', 'is', 'this' ),
array( 'complete', 'sentence' )
);
echo var_dump($a);
echo "<br/><br/><br/>";
$b = call_user_func_array("array_merge", $a);
echo var_dump($b);
?>
这会通过附加数组来构建结果,并且可能效率低下。您可以查看SplFixedArray
,它允许您预先分配空间。然后遍历原始数组中的组成数组并加载结果。这是一篇讨论SplFixedArray
的博客文章,其中包括时间结果:http://www.johnciacia.com/2011/02/01/array-vs-splfixedarray/
这是一个冗长的版本:
<?php
$a = array(
array( 'the','data','i'),
array( 'need', 'is', 'this'),
array( 'complete', 'sentence')
);
$size = 0;
foreach ($a as $subarray) {
$size += count($subarray);
}
$result = new SplFixedArray($size);
# If you do not have SPL, just use $result = Array(); and write to a high index first (probably)
$i = 0;
foreach ($a as $subarray) {
foreach ($subarray as $value) {
$result[$i++] = $value;
}
}
echo var_dump($result);
?>