2014-03-31 3 views
6

foreach 루프를 사용하지 않고 한 어레이에서 모든 값을 가져 오는 방법이 있습니까?foreach 루프없이 배열 값 가져 오기

<?php 
$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]); 

내가 필요로하는 출력은 내가 foreach는 루프를 사용하여 포함하지 않는 옵션을 찾고, array("a", "b", "c")

내가이

$stack = []; 

foreach($foo as $value){ 
    $stack[] = $value["type"]; 
} 

var_dump($stack); 

같은 것을 사용하여 수행 할 수있다 그러나. 당신이 PHP를 5.5 이상을 사용하는 경우

+0

for 루프를 사용 하시겠습니까? – magnetronnie

+0

@ magnettronnie 더 악한 :) – iOi

답변

12

, 당신과 같이, array_column()를 사용할 수 있습니다

$result = array_column($foo, 'type'); 

당신이 숫자 인덱스를 가지는 배열을 사용하려면 : 당신이 경우

$result = array_values(array_column($foo, 'type')); 

을 이전 PHP 버전을 사용하고 현재 업그레이드 할 수없는 경우 같은 저자가 작성한 Userland implementation of array_column() 함수를 사용할 수 있습니다.

또는 array_map()을 사용할 수도 있습니다. 루핑이 명시 적으로 표시되지 않는다는 점을 제외하면 기본적으로 루프와 같습니다.

$foo = array(["type"=>"a"], ["type"=>"b"], ["type"=>"c"]); 
$result = array_column($foo, 'type'); 

를 또는 이전 버전 array_map()을 사용합니다 :

$result = array_map(function($arr) { 
    return $arr['type']; 
}, $foo); 
+1

슬프게도 나는 5.5를 사용하고 있지 않다. – iOi

+1

'array_column()'이 원하는 배열을 반환 할 것이므로'array_values ​​()'는 필요 없습니다. –

+0

@AlmaDo : 알고 있습니다. 방금 OP가 숫자 인덱스가있는 배열을 원한다고 생각했습니다. –

4

어느 PHP 5.5 array_column()를 사용

$result = array_map(function($x) 
{ 
    return $x['type']; 
}, $foo); 

참고 : 루프가 계속 수행됩니다,하지만 내부 숨겨집니다 앞에서 설명한 기능들.

관련 문제