Sie müssen einen strikten Vergleich durchführen. Sie müssen nur das Gegenteil tun.
if (strpos($status, 'L') !== false) {
echo "L is there!.";
} else {
echo "No L Found!";
}
Wenn mit === true
ausgewertet, strpos($status,'L')
hätten einen wörtlichen boolean true
, nicht nur einen Wert zurückgeben, der den Wert true, und wie Sie in der Dokumentation sehen, wird strpos
nie zurück.
Wenn Sie stattdessen == true
verwenden, würde es funktionieren manchmal, nur wenn L nicht das erste Zeichen in der Zeichenfolge war. Wenn es das erste Zeichen ist, gibt 0
zurück, was nicht true
auswertet, aber jede andere Position in der Zeichenfolge würde eine positive ganze Zahl zurückgeben, was tut.
Da false
ist der Wert der Funktion zurückgibt, wenn der Suchbegriff nicht gefunden wird, die einzige zuverlässige Möglichkeit, dies zu tun ist streng Vergleich gegen false
zu tun.
bedeutet das, ich muss verwenden! == false statt === true? Ich dachte immer, wenn es nicht wirklich auf "falsch" gesetzt wäre, würde alles, was mit "wahr" verglichen wird, wahr werden. Ist das nicht der Fall? – DerekConlon
richtig - obwohl sehr kurz - zu beantworten. Vielleicht möchten Sie einen Link oder ein Zitat der Dokumente hinzufügen. Oder erkläre mal, warum in diesem Fall auch "true! = 1" – Jeff
@DerekConlon ja, das ist richtig. – thelmuxkriovar