Ben bir dizi benzersiz olması için bildiğiniz bir anahtar için bir dizin almak nasıl

3 Cevap php

Ben bu yüzden onları bir diziye saklamak için karar verdik belli bir düzen içinde öğelerin bir listesi var

$items = array(
   "apple",
   "banana",
   "pear"
);

Program parametresi "muz" ile denir eğer ben "elma" önce gelir ve "armut" sonra gelir söylemek gerekiyor. Şu anda böyle bir şey yapıyorum:

foreach($items as $k=>$v) { if ($v == "banana") { $current_key = $k }

Yani şimdi ben $ current_key -1 önceki ve sonraki 1 olduğunu biliyoruz. Bu sadece tüm dizi yineleme yapmak çirkin DUYGU çalışır. Bunu yapmak için daha iyi bir yolu var mı?

UPDATE In case anyone cares, I decided to do a few quick tests to see how fast the ways of getting the information were. Over 1000 iterations, on an array of 6000 items, microtime retunred:

My Posted Way: 4.567 Array_Search: 2.749

Ben düşünüyordum iken ben de gibi diziler bir dizi verilerin saklandığı bir yaklaşım denedi:

$items['banana']['next'] = 'pear';
$items['banana']['prev'] = 'apple';

, tabii ki, mil (0.0005) tarafından kazanan olduğu. Bunların hiçbiri sadece merak ettim ve bu okuyan herkes ile paylaşmayı düşündüm, gerçekten ilgili olduğunu.

3 Cevap

array_search() size döngü kaydetmeniz gerekir.

Sen array_search fonksiyonu arıyoruz: http://www.php.net/manual/en/function.array-search.php.

$key = array_search('banana', $items);

http://www.php.net/manual/en/function.array-search.php

$current_key=array_search('banana',$items);