In PHP wird die Stripos -Funktion verwendet, um die Position einer Zeichenfolge in einer anderen Zeichenfolge (Fall unempfindlich) zu finden. Diese Funktion gibt den gefundenen Standortindex zurück oder falls nicht gefunden, falsch . Wenn die SCRIPOS -Funktion jedoch 0 zurückgibt, denken viele Entwickler fälschlicherweise, dass sie falsch ist, weil in PHP die Zahl 0 und der Boolesche Wert False äquivalent sind. Gibt die Stripos -Funktion 0 falsch zurück? Warum gibt es ein falsches Urteil? Wie sollten wir diesen Rückgabewert richtig verstehen? Als nächstes beantworten wir diese Fragen einzeln.
Der Funktionsprototyp von Stripos lautet wie folgt:
stripos(string $haystack, string $needle, int $offset = 0): int|false
$ haystack : Die String, nach der gesucht wird.
$ nadel : Die zu findene Zeichenfolge.
$ offset : Starten Sie die Suche von diesem Ort (optional).
Die Funktion dieser Funktion besteht darin, die Position zurückzugeben, in der $ Nadel zuerst in $ haystack erscheint (ab 0). Wenn die Zeichenfolge nicht gefunden wird, wird False zurückgegeben.
$haystack = "Hello World";
$needle = "world";
$position = stripos($haystack, $needle);
echo $position;
Die Ausgabe ist:
6
Dies liegt daran, dass in der Zeichenfolge "Hello World" der erste Ort, an dem "Welt" (Fallunempfindlichkeit) erscheint, die Indexposition 6 ist.
Viele Entwickler können es direkt mit False vergleichen, wenn der Rückgabewert der Stripos -Funktion beurteilt wird. Angenommen, es gibt den folgenden Code:
$haystack = "test string";
$needle = "test";
if (stripos($haystack, $needle) === false) {
echo "Nicht gefunden";
} else {
echo "Gefunden";
}
In diesem Fall gibt Stripos 0 zurück, da "Test" in "Test String" aus Position 0 angezeigt wird. Obwohl das Programm die passende Zeichenfolge gefunden hat, gibt es daher immer noch "nicht gefunden" aus, da 0 in PHP als falsch angesehen wird.
Um den Rückgabewert von Stripos korrekt zu beurteilen, müssen wir es vermeiden, direkt mit False zu vergleichen. Der korrekte Ansatz ist die Verwendung des strengen Vergleichsoperators ===, um festzustellen, ob False zurückgegeben wird, und der Betrachtung , dass 0 eine gültige Übereinstimmungsposition ist. Hier ist ein geänderter Code -Beispiel:
$haystack = "test string";
$needle = "test";
$position = stripos($haystack, $needle);
if ($position === false) {
echo "Nicht gefunden";
} else {
echo "Gefunden,Ort ist:".$position;
}
In diesem Fall wird das Programm korrekt ausgegeben:
Gefunden,Ort ist:0
Auf diese Weise können wir durch den strengen Vergleichsoperator === zwischen False (angeben, dass keine gefundenen) und 0 unterscheiden (was darauf hinweist, dass die passende Position 0 beträgt).
Achten Sie bei der Beurteilung des Rückgabewerts von Stripos unbedingt auf die folgenden Punkte:
Verwenden Sie nicht == Vergleich : Weil in PHP 0 und False äquivalent sind, führt die Verwendung von == zu falschen Urteilen.
Verwenden Sie strenge Vergleich === : Dies kann zwischen False (nicht gefunden) und 0 unterscheiden (zeigt an, dass die Zeichenfolge am Anfang eine Übereinstimmung hat).
Darüber hinaus wird empfohlen, angemessene Standardwerte festzulegen oder Fehlerbehandlungen für die von Stripos zurückgegebenen Werte in der tatsächlichen Entwicklung durchzuführen, um die Robustheit des Programms sicherzustellen. Zum Beispiel:
$position = stripos($haystack, $needle);
if ($position === false) {
// Umgang mit unfunden Situationen
} else {
// Die gefundene Situation bewältigen
}
Wenn in PHP die Stripos -Funktion 0 zurückgibt, bedeutet dies nicht, dass die passende Zeichenfolge nicht gefunden werden kann, sondern dass die passende Zeichenfolge an Position 0 beginnt. Um es fälschlicherweise zu vermeiden, dass 0 falsch ist, sollten wir den strengen Vergleichsbetreiber === verwenden, um festzustellen, ob der Rückgabewert falsch ist, und damit sichergestellt wird, dass die Beurteilungslogik des Programms korrekt ist.
Durch das Verständnis des Rückgabewerts von Stripos und das Einnehmen geeigneter Vergleichsmethoden können wir Beurteilungsfehler effektiv vermeiden und robusteren PHP -Code schreiben.