2010-02-01 40 views
5

Dizideki değerleri bulmaya çalışıyorum. Bu dizi her zaman 0 ile başlar. maalesef dizi_search dizi elemanıyla arama yapmaya başlar. Böylece ilk eleman her zaman göz ardı edilir.Dizi aramasıyla ilgili sorun

Bu diziyi 1 ile başlamak için nasıl "kaydırırım" veya dizi-arama başlatmayı 0 ile nasıl yapabilirim? Dizi bir XML web hizmetinden geliyor, bu yüzden sonuçları değiştiremezsiniz.

+0

yazın kodunuzu ve nasıl arama yaptığınız açık çünkü 'array_search 'doğru çalışıyor Ama belki sizin amacınız için doğru işlev değildir. –

cevap

2

kılavuzuna bakın, size yardımcı olabilecek: ne yapmaya çalıştığını kullanımı birer anahtar artırmak ise http://www.php.net/manual/en/function.array-search.php

, yapabileceğiniz:

function my_array_search($needle, $haystack, $strict=false) { 
    $key = array_search($needle, $haystack, $strict); 
    if (is_integer($key)) $key++; 
    return $key; 
} 
my_array_search($xml_service_array); 
+0

hmm thanx ama daha fazla açıklayabiliyorum çünkü sıfır kullandım ama çalışmıyor. array_search() 0 anahtarında başlar mı? –

+1

dizin anahtarının Sıfır olduğundan emin olun, meagar'ın bir örnek olarak ne dediğini gözden geçirin. – Ghazanfari

+0

Bu örnek teknik olarak sorununuzu çözecektir, ancak elde edilen anahtar bulmak istediğiniz öğeyi geçecektir. Yine de element 0'ı bulacaksın. Böylece, döndürdüğü anahtar, aslında verileri nerede bulacağınızı söylemez. – meagar

13

array_searchyapar değil endeksi 1'de arama Bu örneği deneyin başlangıç ​​:

<?php 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 
$key = array_search('blue', $array); // $key = 0 
?> 

sorun ne olursa olsun ben s kodunuzla, bu ilk elemanın index 0 değil.

Geri dönüş değerini kontrol etmek için === yerine == kullanıyorsunuzdur. array_search getiri 0 durumunda ilk elemanını gösteren, aşağıdaki kod çalışmaz: Belki göstermelidir

// doesn't work when element 0 is matched! 
if (false == array_search(...)) { ... } 

Bunun yerine, zorunluluk hem değerini karşılaştırır === ve kullanarak check

// works, even when element 0 is matched 
if (false === array_search(...)) { ... } 
+0

harika bir wow thanx dostum, ben problemi bulmak düşünüyorum. –

+0

Bu sitedeki bu büyük kırmızı ** uyarı ** kutusunda belirtilmiştir: http://php.net/manual/en/function.array-search.php El ile sayfaların okunması bazen gerçekten yardımcı olur! –