Unterschiede zwischen zwei Zeichenfolgen in einer PHP-Funktion

June 12

Zum Vergleichen von Zeichenfolgen in einer PHP-Funktion können Sie in der Regel eine einfache Auswertung z. B. "if($string1==$string2)." Manchmal können jedoch zwei Zeichenfolgen in einer PHP-Funktion feine Unterschiede zwischen ihnen---eine Folge der Art und Weise haben, die PHP Variablen behandelt. Da keine Typdaten mit der Variablen gespeichert ist, erlaubt PHP Zeichenfolgenvergleiche, auch wenn ein Zeichenfolgenvergleich ungeeignet und manchmal ungewöhnliches Verhalten beim Versuch zeigt, die Unterschiede zwischen zwei Zeichenfolgen überprüfen.

PHP Variable eingeben

Programmiersprachen, können in der Regel entweder "stark" oder "schwach" eingegeben. In einer stark typisierte Sprache haben Variablen einen expliziten Typ---z. B. "Integer" oder "Zeichenkette." PHP ist eine schwach typisierte Sprache; die Variable "$var1 = 1.0" ist heilbar als eine ganze Zahl, eine Gleitkommazahl (wenn eine Dezimalzahl z.B. multipliziert) oder eine Zeichenfolge (wenn verkettet mit den "." Operator) je nachdem, wie es benutzt wird. PHP ist sehr wenig Variablenprüfung, was generell nützlich ist, denn es zusätzliche Flexibilität bietet und die Notwendigkeit für das Gießen entfernt. Auf der anderen Seite kann dies unter bestimmten Umständen unerwartetes Verhalten bei der Programmierung verursachen.

String-Werte und Casting

PHP unterstützt die Verwendung von Gießen---konvertieren eine Variable ausdrücklich von einem Typ in einen anderen---durch die Aufnahme des Variablentyps in Klammern, bevor die Variable initialisiert wird. Z. B. "$var2 = (String) $var1" "$var2" als explizite Zeichenfolge initialisiert. PHP ermöglicht auch on-the-Fly-Zeichenfolge Gießen durch Verwendung der Funktion "strval()": der Code "$var3 = True" erstellt "$var3" als eine boolesche Variable. "strval($var3)" werden die gleichen booleschen Variablen als String, wie z. B. Zeichenfolgenvergleiche oder Teilzeichenfolge Operationen behandeln.

Vergleiche von Zeichenfolgen

PHPS schwache Typisierung kann manchmal zu einem Problem geworden. Betrachten Sie z. B. im Fall von "$var1 = 1.0; $var2 = 1;. " Ein PHP-Vergleich zwischen den beiden behandelt sie als gleich: if($var1 == $var2) gibt "wahr", zurück, da standardmäßig PHP sie als Zahlen behandelt. Dies gilt, selbst sind sie umwickelt strval() Funktionen: if(strval($var1)==strval($var2)) kehrt auch "wahr." Um diese zwei Zeichenfolgen in einer PHP-Funktion genau zu vergleichen, verwenden Sie die "===" Vergleich: if($var1===$var2) kehren "false".

Objekte als Zeichenfolgen

PHPS Bereitschaft Variablen on-the-Fly konvertieren kann auch Probleme verursachen, wenn Sie Objekte verwenden. Betrachten Sie beispielsweise ein XML-Dokument, die dieselbe Zeichenfolge (z. B. einen Namen wie "John Doe") enthält, an zwei Orten. Wenn Sie jeweils in einer Variablen mit PHP integrierten "Simplexml" Bibliothek laden, wird ein Vergleich zwischen den beiden Variablen "false zurückgegeben" Obwohl der String-Wert identisch ist, denn jeder Informationen über die XML-Hierarchie trägt und die beiden technisch anders, sind weil sie in unterschiedliche Teile der XML-Datei befindet. In diesem Fall kommen durch Rücksendung nur die Zeichenfolge ohne zusätzliche Knoteninformationen strval() zur Rettung.