당신이 제기 한 문제는 재귀 적으로 단순화되는 일반적인 것으로 보이지 않으므로 다른 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);
?>
가능성있는 속는 : http://stackoverflow.com/questions/526556/how-to-flatten -a-multi-dimensional-array-to-simple-one-in-php –
그 해결책은 10k 개 요소 (전체)를 처리하는 것이 좋을까요? – kapeels
좋은 질문, @KPL. 이 솔루션은 배열이 임의의 깊이로 중첩되는 일반적인 경우를 고려합니다. 최상위 수준에서만 병합에 관심이 있다면 재귀를 사용하지 않고보다 효율적으로 무언가를 작성할 수 있습니다. –