2010-06-02 12 views
23

È possibile ottenere facilmente un valore di matrice da un tasto in questo modo: $value = array[$key] ma cosa succede se ho il valore e voglio la chiave. Qual è il modo migliore per farlo?Come ottenere l'array KEY da VALUE?

risposta

50

È possibile utilizzare array_search() per trovare la prima chiave corrispondente.

Dal manuale:

$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

È possibile utilizzare la funzione array_keys per quello.

Esempio:

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

In questo modo ottenere la chiave dalla matrice per il valore blue

+0

È proprio questo ciò che l'OP sta cercando? L'ho capito diversamente (come una ricerca di un * valore *). –

+0

@Pekka: Vediamo cosa OP effettivamente sta cercando, alzi però :) – Sarfraz

+0

array_search e array_keys funzionano entrambi per me, tuttavia array_search fa il passo extra di dover prendere il primo valore dell'array restituito da array_keys. Quindi userò array_search, ma +1 a ciascuno di voi poiché sono entrambe buone risposte. –

0

modo No davvero facile. Passare in rassegna le chiavi fino a trovare la matrice [$ chiave] == $ valore

Se lo si fa spesso, creare un array/hash inverso che ricalcoli i valori ai tasti. Tieni presente che più chiavi possono essere associate a un singolo valore.

+0

Sono d'accordo con fare una mappa inversa se hai bisogno di fare molte ricerche, ma sicuramente c'è [un modo semplice] (http://stackoverflow.com/questions/2960066/best-way-to-get-array-key- from-value/2960083 # 2960083) –

+1

@barrycarter @ Michael_Mrozek, vedere array_flip – mmattax

0

I suoi valori di matrice possono essere duplicati in modo che non ti danno le chiavi esatte. Tuttavia, il modo in cui penso va bene è come ripetere e leggere i tasti

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

Più veloce - nessun confronto, basta capovolgere i valori con i tasti. – fkaufusi

Problemi correlati