2016-04-24 9 views
-2

Ich habe versucht, ein System zu machen, wo bestimmte Flags in einer MySQL-Datenbank mit PHP überprüft werden. Um zu sehen, ob ein bestimmter Buchstabe in der Zeichenfolge ist, verwende ich die Funktion strpos(). Wenn der Buchstabe, nach dem ich suche, der erste in der Zeichenfolge ist, gibt die Funktion 0 zurück. Dieses Ergebnis scheint jedoch gleichbedeutend mit dem booleschen Wert für false zu sein. Getestet habe ich diese Theorie mit dem folgenden Code:PHP 0 vs falsche Ambiguität

if(0 == false){ 
    echo 'true'; 
} 

und siehe da dies als wahr ausgewertet wird und erinnert an die Ausgabe innerhalb des Blocks. Gibt es also eine logische Möglichkeit, zwischen einem Zeichen, das den Index 0 hat oder überhaupt nicht Teil des Strings ist, zu unterscheiden? Eine Option, die mir einfällt, ist, die Markierungszeichenfolge mit einem Zeichen wie einem Unterstrich zu versehen. Auf diese Weise befinden sich keine sinnvollen Zeichen jemals im Index 0 des Rückgabewerts der Funktion. Das scheint eine sehr dreckige, fleckige Art zu sein, Dinge zu reparieren. Wenn Sie andere Ideen haben, würde ich Ihre Hilfe sehr schätzen. Danke fürs Lesen.

+0

Warum fügen Sie nicht nur einfach '1' zu 'strpos' ausgegeben.! –

+0

Das Handbuch ist eine gute Ressource, dies zeigt Tabellen, was Sie von losen/strengen Vergleichen erwarten können: http://php.net/manual/en/types.comparisons.php – JimL

+0

Umm @UmairShahYousafzai: 'echo (false + 1); ' – AbraCadaver

Antwort

1

Verwendung ===:

if(0 === false){ 
    // will never be true 
    echo 'true'; 
}