2013-09-26 4 views
2

나는이배열에서 특정 값을 효율적으로 가져 오는 방법은 무엇입니까?

array(3) { 
    [0]=> 
    array(2) { 
    ["company"]=> 
    string(15) "Company A" 
    ["value"]=> 
    string(6) "100" 
    } 
    [1]=> 
    array(2) { 
    ["company"]=> 
    string(9) "Company B" 
    ["value"]=> 
    string(6) "150" 
    } 
    [2]=> 
    array(2) { 
    ["company"]=> 
    string(13) "Company C" 
    ["value"]=> 
    string(6) "200" 
    } 
} 

같은 배열 지금은 모든 회사 이름을 얻고 commata에 의해 그들을 연결 할 수 있습니다. 나는 같이 갈 수 있습니다 :

foreach ($array as $a) { 
    $companies[] = $a['company']; 
} 
$company_names = implode(',', $companies); 
var_dump($company_names); 

인쇄

string(29) "Company A,Company B,Company C" 

그래서 말 : 그것은 작동합니다. 그러나 이것은 루프가있는 저에게 비효율적 인 것 같습니다.

동일한 결과를 얻는보다 효율적인 방법이 있습니까? 예 : array_keys을 사용 하시겠습니까?

+1

나는 그것을 의심한다. 값을 얻으려면 그 방법으로 반복해야합니다. –

+0

내장 함수가 반복되지 않는다고 제안 하시겠습니까? 이것을 비효율적으로 생각하려면 3 개 이상의 기업이 필요합니다. 일반적으로 이러한 종류의 처리는 시스템 요구 사항에 비해 매우 낮습니다. 의심스러운 경우 벤치마킹하거나 캐싱 스크립트를 작성하십시오. –

+0

나는 동의한다, 나는 너를 얻으려고하는 것처럼 너를 잘 생각한다. 어레이를 구축 할 때 최적화가 될 수 있습니다. – SamA

답변

4

당신은 array_column() 사용할 수 있지만 5.5보다 큰 PHP 버전이 필요합니다

$array = array_column($companies, 'company'); 
echo implode(',', $array); 
푸 쑤에 의해 제안
+0

그리고 php <5.5의 몇 가지 해결책이 있습니다. 수동 코멘트 –

+1

[php <5.5] (http://benramsey.com/blog/2013/07/the-array-column-php-userland-library/) –

1

사용 array_column() :

$array = array_column($companies, 'company'); 
echo implode(',', $array); 

Demo!

1

가 있습니까이 올 수있는보다 효율적인 방법 o 같은 결과?

효율적인은 광범위한 용어입니다. 나는 효율적인네이티브을 의미합니다 가정합니다. 그렇다면 PHP 5.5 이상에서 array_column()answered by Fu Xu으로 사용할 수 있습니다.

그렇지 않으면 PHP < 5.5에서 아니요. 즉, 네이티브입니다. 동일한 수십 가지의 네이티브를 결합하여 동일한 것을 달성 할 수는 있지만, 단순히 고양이를 피부로 가꾸는 더 많은 방법 일뿐입니다.

+0

위의 설명에서 언급했듯이,이 경우 효율적인 방법은 다음과 같습니다. 동일한 결과에 대한 코드 줄이 적습니다. –

+1

답변은 동일하게 유지됩니다. 코드 줄이 항상 더 좋은 것은 아닙니다. * 더 명확하지 * 더 깨끗하지 * 않습니다. –

+0

진실한 (그러나 보편적이지는 않지만) 진실에 대한 +1. –

관련 문제