Rückgabewert-Macken von strpos() verstehen
Wenn Sie strpos() verwenden, um einen Teilstring innerhalb eines bestimmten Strings zu finden, ist es wichtig, dies zu berücksichtigen die Auswirkungen auf den Rückgabewert. Andernfalls kann es zu unerwarteten Ergebnissen kommen.
Problem:
Beim Versuch, die Startposition zweier Teilzeichenfolgen zu identifizieren und sicherzustellen, dass sich die erste vor der zweiten befindet stößt ein Programmierer auf ein unerwartetes Verhalten. Der Code prüft mithilfe des losen Gleichheitsvergleichsoperators (<>), ob jede Teilzeichenfolge in der Zielzeichenfolge vorhanden ist. Wenn der Rückgabewert von strpos() falsch ist, bedeutet dies, dass die Teilzeichenfolge nicht gefunden wurde. Wenn der Teilstring jedoch an Position Null beginnt, scheint strpos() 0 zurückzugeben, was fälschlicherweise als falsch interpretiert wird.
Lösung:
Das PHP-Handbuch explizit besagt, dass strpos() boolesche FALSE oder nicht-boolesche Werte (z. B. 0) zurückgeben kann, die als FALSE ausgewertet werden. Um diese Verwirrung zu vermeiden, empfiehlt PHP die Verwendung des ===-Operators (strikte Gleichheit) zum Testen des Rückgabewerts von strpos().
Im bereitgestellten Beispiel sollte der Programmierer den losen Gleichheitsoperator (<> ;) mit dem strikten Gleichheitsoperator (!==) in den strpos()-Prüfungen. Dadurch wird sichergestellt, dass der Vergleich wie erwartet funktioniert und das Vorhandensein oder Fehlen der Teilzeichenfolgen in der Zielzeichenfolge korrekt identifiziert.
Das obige ist der detaillierte Inhalt vonWarum gibt „strpos()' 0 zurück und wie kann ich zuverlässig prüfen, ob ein Teilstring vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!