2010-06-02 19 views

Respuesta

50

Puede usar array_search() para encontrar la primera clave coincidente.

Del manual:

$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

Puede usar la función array_keys para eso.

Ejemplo:

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

Esto hará que la clave de la matriz por el valor blue

+0

¿Es esto realmente lo que OP está buscando? Lo entendí de manera diferente (como una búsqueda de un * valor *). –

+0

@Pekka: veamos lo que OP está buscando en realidad, aunque las manos :) – Sarfraz

+0

array_search y array_keys me funcionan, sin embargo, array_search elimina el paso adicional de tener que tomar el primer valor de la matriz devuelta por array_keys. Entonces usaré array_search, pero +1 a cada uno de ustedes ya que ambos son buenas respuestas. –

0

manera No realmente fácil. Pasa por las teclas hasta que encuentres la matriz [$ key] == $ value

Si haces esto a menudo, crea una matriz inversa/hash que correlacione los valores a las claves. Tenga en cuenta que varias teclas pueden asignarse a un solo valor.

+0

Estoy de acuerdo con hacer un mapa inverso si necesita hacer muchas búsquedas, pero definitivamente hay [una manera fácil] (http://stackoverflow.com/questions/2960066/best-way-to-get-array-key- from-value/2960083 # 2960083) –

+1

@barrycarter @ Michael_Mrozek, vea array_flip – mmattax

0

Sus valores de la matriz pueden ser duplicados por lo que no le dará las claves exactas. Sin embargo, la forma en que creo que está bien es como repetir y leer las claves

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

Lo más rápido: sin comparación, solo cambie los valores con las teclas. – fkaufusi

Cuestiones relacionadas