2010-02-01 14 views
5

Ich versuche, Werte in einem Array zu finden. Dieses Array beginnt immer mit 0. Leider array_search beginnt die Suche mit dem Array-Element 1. So wird das erste Element immer übersehen.Problem bei der Array-Suche

Wie könnte ich dieses Array "verschieben", um mit 1 zu beginnen, oder Array-Suche starten mit 0? Das Array stammt aus einem XML-Webdienst, sodass ich die Ergebnisse nicht ändern kann.

+0

geben Vielleicht sollten Sie zeigen Dein Code und wie Du suchst weil offensichtlich 'array_search' funktioniert. Aber vielleicht ist es nicht die richtige Funktion für Deinen Zweck. –

Antwort

2

das Handbuch Siehe, es könnte Ihnen helfen: http://www.php.net/manual/en/function.array-search.php

Wenn das, was Sie versuchen, durch eine Verwendung zu erhöhen, ist der Schlüssel zu tun, was Sie tun können:

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 danke aber kannst du mehr erklären weil ich Zero benutzt habe aber nicht funktioniert. Startet array_search() bei der 0-Taste? –

+1

sicher der Indexschlüssel ist Null, schauen Sie auf was Meagar als Beispiel sagte – Ghazanfari

+0

Dieses Beispiel wird technisch Ihr Problem lösen, aber der resultierende Schlüssel zeigt 1 nach dem Element, das Sie finden möchten. Sie werden jedoch immer noch Element 0 finden. Daher sagt der Schlüssel, den er zurückgibt, nicht wirklich, wo die Daten zu finden sind. – meagar

13

array_search tut nicht starten 1. dieses Beispiel bei Index Suche:

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

Was auch immer das Problem, das ich s mit Ihrem Code, ist es nicht, dass es das erste Element ist Index 0.

Es ist wahrscheinlicher, dass Sie == anstelle von === verwenden, um den Rückgabewert zu überprüfen. Wenn array_search 0 zurück, was darauf hindeutet das erste Element, der folgende Code wird nicht funktionieren:

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

Stattdessen Sie must Scheck === verwenden, die sowohl Wert vergleicht und

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

wow thanx Kumpel das war super, ich denke, ich finde das Problem. –

+0

Es ist in diesem großen roten ** Warnung ** Feld auf dieser Website gesagt: http://php.net/manual/en/function.array-search.php Das Lesen manueller Seiten manchmal wirklich hilft! –

Verwandte Themen