2011-09-18 2 views
27

좋아, 그래서이 배열 내에서 '어쩌구'의 위치를 ​​잡아야한다 (위치는 항상 동일하지는 않다). 예를 들어 :배열 내에서 키의 위치를 ​​얻는 방법

$array = (
    'a' => $some_content, 
    'b' => $more_content, 
    'c' => array($content), 
    'blah' => array($stuff), 
    'd' => $info, 
    'e' => $more_info, 
); 

그래서 나는 배열 내에서의 'ㅋ'키가있는 위치의 수를 반환 할 수 있도록하고 싶습니다. 이 시나리오에서는 3을 반환해야합니다.이 작업을 어떻게 신속하게 수행 할 수 있습니까? 그리고 $ 배열 배열에 전혀 영향을 미치지 않습니다.

답변

62
$i = array_search('blah', array_keys($array)); 
+0

대단히 감사합니다. 원래는 매개 변수를 역전시킨 것 같았지만 고정 시켰습니다. 다른 방법으로 시도하고 오류가 발생했습니다. 그러나 이제는 완벽합니다. 감사합니다 :) – SoLoGHoST

+0

때로는 답변이 너무 분명해 ... :) –

-3

사용자 array_search (doc). 즉,`$ 인덱스 = array_search ('ㅋ', $ 배열)

+3

아니! Doctors says : 배열에서 사용자가 물어 본 ** 키 **가 아닌 주어진 ** 값 **을 찾습니다. –

0

$keys=array_keys($array); 당신에게 그래서 $array

의 키를 포함하는 배열을 줄 것이다, array_search('blah', $keys);$array 때문에 $keys 당신에게 blah의 인덱스를 줄 것이다

3

당신이 알고있는 경우 키가 존재 :

PHP 5.4 (Demo) :

echo array_flip(array_keys($array))['blah']; 

PHP 5.3 : 당신은 키가 알 수없는 경우

$keys = array_flip(array_keys($array)); 
echo $keys['blah']; 

, 당신은 isset으로 확인할 수 있습니다

$keys = array_flip(array_keys($array)); 
echo isset($keys['blah']) ? $keys['blah'] : 'not found' ; 

이 단지 array_search 비슷하지만, 이미 존재하는지도를 사용합니다 어떤 배열 안에. 나는 이것이 실제로 array_search보다 나은지 말할 수 없습니다. 이것은 시나리오에 따라 다를 수 있으므로 다른 대안 일 수 있습니다.

+0

그래, 열쇠가 항상 존재한다는 사실을 안다! 이 경우,'array_search'를 사용하는 것보다 빠르지 않습니까? – SoLoGHoST

+0

이렇게 대답 해주세요 :'array_flip'가'array_search'보다 빠르면, :)입니다. 키 룩업 자체는'array_search'보다 빠릅니다. – hakre

+0

나는 그 아이디어가 마음에 들지만, array_search는 실제로 PHP 5.3에서 내 테스트에 따르면 더 빠릅니다. –

관련 문제