2010-06-02 8 views

답변

50

array_search()을 사용하여 첫 번째로 일치하는 키를 찾을 수 있습니다. 수동에서

: 그것은 늘 당신에게 정확한 키를 제공 귀하의 배열 값이 중복 될 수 있습니다

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 

$key = array_search('green', $array); // $key = 2; 
$key = array_search('red', $array); // $key = 1; 
14

array_keys을 사용할 수 있습니다.

예 :

$array = array("blue", "red", "green", "blue", "blue"); 
print_r(array_keys($array, "blue")); 

+0

이것이 실제 OP가 찾고있는 것입니까? 나는 그것을 다르게 이해했다 (* 가치 *에 대한 검색). –

+0

@Pekka : OP가 실제로 찾고있는 곳을 보자. :) – Sarfraz

+0

array_search와 array_keys 모두 나를 위해 작동하지만 array_search는 array_keys에서 반환 한 배열의 첫 번째 값을 가져 오는 추가 단계를 수행하지 않습니다. 그래서 array_search를 사용 하겠지만 모두 좋은 답변이므로 +1을 +1하십시오. –

0

아니 정말 쉬운 방법 값 blue의 배열에서 키를 얻을 것이다. 배열을 찾을 때까지 키를 반복합니다. [$ key] == $ 값

이렇게하는 경우 값을 키로 다시 매핑하는 역 배열/해시를 만듭니다. 여러 키가 단일 값으로 매핑 될 수 있습니다.

+0

많은 조회를해야하는 경우 역방향 맵을 만드는 것에 동의하지만 [쉬운 방법]은 분명합니다 (http://stackoverflow.com/questions/2960066/best-way-to-get-array-key- from value/2960083 # 2960083) –

+1

@barrycarter @ Michael_Mrozek, array_flip을 참조하십시오. – mmattax

0

. 그러나 내가 생각하는 방식은 반복하고 키를 읽는 것과 같습니다.

3
$arr = array('mango', 'orange', 'banana'); 
$a = array_flip($arr); 
$key = $a['orange']; 
+0

가장 빠른 - 비교가 없으면 키로 값을 대칭 이동하십시오. – fkaufusi

관련 문제