2017-09-25 4 views
0

Ich habe Probleme mit strpos Bewertung richtig.strpos nicht zu bewerten, was ich denke, es sollte

$status = "L"; 
$x = strpos($status,'L'); 
echo var_export($x,true); 
echo "<br/>"; 
if (strpos($status,'L') === true) {echo "L is there!.";} 
else {echo "No L Found!";} 

Diese Ausgänge:

0 
No L Found! 

Mit wie ich verstehe strpos und die "===" gegen die "==" dies der L.

finden sollte

Was muss ich nicht verstehen?

Antwort

4

strpos gibt nicht wahr zurück, es gibt false zurück, wenn die Zeichenfolge nicht gefunden wird oder der Index, wenn sie gefunden wird.

von den offiziellen Dokumenten:

Gibt die Position, wo die Nadel zu Beginn des Heuhaufen string (unabhängig von Offset) relativ existiert. Beachten Sie auch, dass die Zeichenfolgenpositionen bei 0 und nicht bei 1 beginnen.

Gibt FALSE zurück, wenn die Nadel nicht gefunden wurde.

+0

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

+1

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

+0

@DerekConlon ja, das ist richtig. – thelmuxkriovar

0

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.

Verwandte Themen