다차원 배열을 1 차원 배열로 바꾸기
PHP다차원 배열을 1 차원 배열로 바꾸기
나는 잠시 동안 이것에 나의 머리를 세게 치고 있었다.
이 다차원 배열이 있습니다.
Array
(
[0] => Array
(
[0] => foo
[1] => bar
[2] => hello
)
[1] => Array
(
[0] => world
[1] => love
)
[2] => Array
(
[0] => stack
[1] => overflow
[2] => yep
[3] => man
)
그리고 나는 이것을 얻을 필요가있다.
Array
(
[0] => foo
[1] => bar
[2] => hello
[3] => world
[4] => love
[5] => stack
[6] => overflow
[7] => yep
[8] => man
)
어떤 아이디어?
다른 모든 솔루션은 다른 키를 사용하여 다차원 배열을 해결합니다. 내 배열은 간단한 숫자 키만 사용합니다.
해결법
-
==============================
1.
array_reduce($array, 'array_merge', array())
예:
$a = array(array(1, 2, 3), array(4, 5, 6)); $result = array_reduce($a, 'array_merge', array());
결과:
array[1, 2, 3, 4, 5, 6];
-
==============================
2.PHP array_mergeDocs 함수는 배열을 평평하게 할 수 있습니다 :
PHP array_mergeDocs 함수는 배열을 평평하게 할 수 있습니다 :
$flat = call_user_func_array('array_merge', $array);
원래 배열의 깊이가 2보다 큰 경우 PHP의 SPL에는 평평하게 만드는 데 사용할 수있는 RecursiveArrayIterator가 있습니다.
$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);
다음을 참조하십시오 : 다차원 배열을 평평하게 만드는 방법?.
-
==============================
3.이것은 정말로 거기에있는 모든 것입니다 :
이것은 정말로 거기에있는 모든 것입니다 :
foreach($array as $subArray){ foreach($subArray as $val){ $newArray[] = $val; } }
-
==============================
4.
foreach ($a as $v1) { foreach ($v1 as $v2) { echo "$v2\n"; } }
여기서 $ a는 배열 이름입니다. 자세한 내용은
-
==============================
5.PHP 5.3에서 가장 짧은 해결책은 새로운 closure 구문을 가진 array_walk_recursive () 인 것 같습니다 :
PHP 5.3에서 가장 짧은 해결책은 새로운 closure 구문을 가진 array_walk_recursive () 인 것 같습니다 :
function flatten(array $array) { $return = array(); array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; }); return $return; }
-
==============================
6.PHP 5.6부터는 언 패킹 인수로 더 간단하게 수행 할 수 있습니다.
PHP 5.6부터는 언 패킹 인수로 더 간단하게 수행 할 수 있습니다.
$flat = array_merge(...$array);
-
==============================
7.PHP5.6에서는이 문제를 해결하기 위해 다른 방법으로 함수를 결합하여 array_shift ()를 호출하여 원래 배열의 첫 번째 요소 인 array_pus ()를 제거하고 새로운 배열을 추가합니다. 중요한 것은 ... splapt / elipse 연산자를 사용하면 array_shitf ()가 인수처럼 반환됩니다.
PHP5.6에서는이 문제를 해결하기 위해 다른 방법으로 함수를 결합하여 array_shift ()를 호출하여 원래 배열의 첫 번째 요소 인 array_pus ()를 제거하고 새로운 배열을 추가합니다. 중요한 것은 ... splapt / elipse 연산자를 사용하면 array_shitf ()가 인수처럼 반환됩니다.
<?php $arr = [ ['foo', 'bar', 'hello'], ['world', 'love'], ['stack', 'overflow', 'yep', 'man', 'wow'] ]; $new = []; while($item = array_shift($arr)){ array_push($new, ...$item); } print_r($new);
산출:
Array ( [0] => foo [1] => bar [2] => hello [3] => world [4] => love [5] => stack [6] => overflow [7] => yep [8] => man [9] => wow )
보기 - ideone
-
==============================
8.동일한 유형의 문제를 해결하기 위해이 코드를 사용했습니다. 그래서 당신도 이것을 시도 할 수 있습니다.
동일한 유형의 문제를 해결하기 위해이 코드를 사용했습니다. 그래서 당신도 이것을 시도 할 수 있습니다.
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; }
-
==============================
9.
$blocked_dates = array( '2014' => Array ( '8' => Array ( '3' => '1', '4' => '1', '6' => '1', '10' => '1', '15' => '1', '25' => '1' ) ), '2015' => Array ( '9' => Array ( '3' => '1', '4' => '1', '6' => '1', '10' => '1', '15' => '1', '25' => '1' ) ) );
결과 (한 차원 입체 배열) :
$unavailable_dates = array(); foreach ($blocked_dates as $year=>$months) { foreach ($months as $month => $days) { foreach ($days as $day => $value) { array_push($unavailable_dates,"$year-$month-$day"); } } } $unavailable_dates = json_encode($unavailable_dates); print_r($unavailable_dates); OUTPUT : ["2014-8-3","2014-8-4","2014-8-6","2014-8-10","2014-8-15","2014-8-25","2015-9-3","2015-9-4","2015-9-6","2015-9-10","2015-9-15","2015-9-25"]
-
==============================
10.이렇게하면 array_walk_recursive ($ array, function ($ a) use (& $ return) {$ return [] = $ a;});
이렇게하면 array_walk_recursive ($ array, function ($ a) use (& $ return) {$ return [] = $ a;});
from https://stackoverflow.com/questions/8611313/turning-multidimensional-array-into-one-dimensional-array by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
glob () - 날짜순 정렬 (0) | 2018.09.13 |
---|---|
PHP : 타임 스탬프에서 상대 날짜 / 시간 생성하기 (0) | 2018.09.13 |
공유 호스팅에서 마술 따옴표를 끄는 방법? (0) | 2018.09.13 |
"치명적인 오류 : PHP의 최대 기능 중첩 수준 '100'도달, 중단 중!" (0) | 2018.09.13 |
PHP : mysql_real_escape_string은 사용자 입력을 청소하기에 충분합니까? (0) | 2018.09.13 |