$value = array[$key]
gibi bir anahtardan kolayca bir dizi değeri alabilirsiniz, ancak değeri varsa ve anahtarı istiyorum. Bunu elde etmenin en iyi yolu nedir?VALUE dizisinden dizi KEY nasıl alınır?
cevap
İlk eşleşen anahtarı bulmak için array_search()
'u kullanabilirsiniz. kılavuzda itibaren
: alışkanlık size kesin anahtarları vermek böylece Kişisel dizi değerleri çiftleri olabilir
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
Bunun için array_keys
işlevini kullanabilirsiniz.
Örnek:
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
Bu
Hayır gerçekten kolay yolu değeri blue
için diziden anahtarı alacak. Dizi [$ key] == $ değer bulana kadar anahtarlar arasında geçiş yapın.
Bunu sık sık yaparsanız, değerleri tekrar anahtarlara eşleyen bir ters dizi/karma oluşturun. Birden fazla tuşun tek bir değerle eşlenebileceğini unutmayın.
Eğer birçok arama yapman gerekiyorsa, ters bir harita oluşturmaya katılıyorum, ama kesinlikle [bir kolay yol] (http://stackoverflow.com/questions/2960066/best-way-to-get-array-key- from-value/2960083 # 2960083) –
@barrycarter @ Michael_Mrozek, bkz. dizi_flip – mmattax
. Ancak, düşündüğüm yol gayet iyiydi ve
$arr = array('mango', 'orange', 'banana');
$a = array_flip($arr);
$key = $a['orange'];
En hızlı - karşılaştırılamaz, sadece tuşları ile değerleri çevirin. – fkaufusi
Anahtarları okumak gibi mi? Farklı bir şekilde anladım (* değeri * için bir arama). –
@Pekka: OP'nin aslında neye baktığını düşünelim, yine de ellerimiz olsun :) – Sarfraz
array_search ve array_keys her ikisi de benim için çalışır, ancak array_search array_keys tarafından döndürülen dizinin ilk değerini almak için ekstra bir adım atmayı gerektirir. Bu yüzden, array_search'i kullanacağım, ancak her ikinize de iyi cevaplar verdiği için +1'i kullanacağım. –