SORU
30 Ocak 2010, CUMARTESİ


PHP büyük küçük harf duyarlı in_array fonksiyonu

in_array Bu işlevi kullanırken büyük küçük harf duyarsız bir karşılaştırma yapmak mümkün mü?

Yani böyle dizi: bir kaynak

$a= array(
 'one',
 'two',
 'three',
 'four'
);

Aşağıdaki aramaları true döndürecektir

in_array('one', $a);
in_array('two', $a);
in_array('ONE', $a);
in_array('fOUr', $a);

Ne işlevi ya da set fonksiyonları aynı mı? in_array kendisi bunu yapabilir sanmıyorum.

CEVAP
30 Ocak 2010, CUMARTESİ


Bunun için açık bir şey arama terimi küçük harfe dönüştür:

if (in_array(strtolower($word), $a) { 
  ...

eğer dizideki büyük harfleri varsa bu tabii ki ilk yapmanız gereken:

$search_array = array_map('strtolower', $a);

ve bu arama. Her arama ile tüm dizi strtolower yapmanın bir anlamı yok.

Arama dizileri ancak doğrusal değildir. Büyük bir dizi var ya bu bir sürü yapmak için gidiyoruz, bu olacak gibi arama dizinin anahtar terimleri için daha iyi olurduçokhızlı erişim:

$search_array = array_combine(array_map('strtolower', $a), $a);

sonra

if ($search_array[strtolower($word)]) { 
  ...

Tek sorun burada dizi anahtarları eğer bir çarpışma varsa, bu yüzden özgün olmak zorundadır. ("Bir" ve "tek") tüm kaybedersiniz. eg

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009