Um Zeichenfolgen in einer PHP-Funktion zu vergleichen, können Sie in der Regel eine einfache Auswertung wie " if ($ string1 == $ string2 ) . " Manchmal jedoch zwei Strings in einer PHP-Funktion können feine Unterschiede zwischen ihnen --- eine Folge der Art und Weise behandelt PHP Variablen haben , weil kein Typ Daten mit der Variable gespeichert wird , ermöglicht PHP-String- Vergleiche , auch wenn ein String-Vergleich wäre unangemessen und zeigt manchmal seltsames Verhalten , wenn Sie versuchen , um die Unterschiede zwischen zwei Strings zu überprüfen. PHP Variable Typing
Programmiersprachen, in der Regel kann entweder " stark " oder " schwach " getippt. In einer stark typisierte Sprache , haben Variablen einen expliziten Typ --- wie "integer" oder "string ". PHP ist eine schwach typisierte Sprache, die Variable " $ var1 = 1.0 " kann als eine ganze Zahl behandelt werden , eine Gleitkommazahl (wenn durch eine Nachkommastelle multipliziert , zum Beispiel) oder ein String ( wenn mit dem Operator verkettet ".") je nachdem, wie es verwendet wird. PHP macht sehr wenig variable Kontrolle , die in der Regel ist nützlich, weil es zusätzliche Flexibilität bietet und beseitigt die Notwendigkeit für Gießen . Auf der anderen Seite , unter bestimmten Umständen , kann dies zu unerwartetem Verhalten in Ihrer Programmierung.
String Werte und Casting
PHP unterstützt die Verwendung von Gießen --- Umwandlung eine Variable ausdrücklich von einem Typ in einen anderen --- indem die Variable Typ in Klammern vor die Variable initialisiert wird. Zum Beispiel: " $ var2 = ( string) $ var1 " initialisiert " $ var2 " als explizite Zeichenfolge. PHP ermöglicht auch on-the -fly -String Gießen durch die Verwendung des " strval ()" -Funktion: der Code " $ var3 = true" schafft " $ var3 " als boolsche Variable. " strval ($ var3 ) " behandeln die gleiche boolesche Variable als String , wie in String -Vergleiche oder substring Operationen .
String Vergleiche
Manchmal PHP kann die schwache Typisierung zu einem Problem werden . Betrachten wir zum Beispiel den Fall von " $ var1 = 1,0 ; $ var2 = 1; . " Ein PHP- Vergleich zwischen den beiden behandelt sie als gleich : if ($ var1 == $ var2 ) gibt "true ", da standardmäßig PHP behandelt sie als Zahlen . Dies gilt auch dann, sie in strval gewickelt werden ()-Funktionen : if ( strval ($ var1 ) == strval ($ var2 ) ) auch zurückkehren wird "true". Um genau zu vergleichen, diese beiden Zeichenfolgen in einer PHP-Funktion , die " === " Vergleich : if ($ var1 $ === var2 ) wird wieder " falsch".
Objekte wie Strings
PHP Bereitschaft Variablen on-the -fly konvertieren kann auch zu Problemen führen, wenn die Verwendung von Objekten . Betrachten wir zum Beispiel ein XML-Dokument , das die gleiche Zeichenfolge (zum Beispiel ein Name wie "John Doe" ) an zwei Stellen enthält . Wenn Sie laden jeweils in eine Variable mit PHP built-in " simplexml " Bibliothek wird ein Vergleich zwischen den beiden Variablen zurückzukehren "falsch" , obwohl die String-Wert identisch ist , denn jeder trägt Informationen über die XML-Hierarchie und die beiden sind technisch anders weil sie in verschiedenen Teilen der XML -Datei. In diesem Fall wird strval () auf die Rettung durch Rücksendung nur die Zeichenfolge kommen , ohne die zusätzliche Informationen zum Knoten .