Heim >Backend-Entwicklung >PHP-Tutorial >Warum erzeugt der PHP-Operator „==' beim Vergleich von 0 und Strings unerwartete Ergebnisse?
PHPs überraschender Vergleich von 0 und Strings
PHPs Bewertung von 0 als gleich einem String ergibt sich aus dem Verhalten seines Vergleichsoperators. Wenn == zum Vergleich verwendet wird, konvertiert PHP die Datentypen, damit sie kompatibel sind. In diesem Fall wird 0 (eine Ganzzahl) in eine Zeichenfolge umgewandelt, sodass sie mit der Zeichenfolge „e“ verglichen werden kann.
Dieses Verhalten wird jedoch inkonsistent, wenn der Preis explizit auf 0 gesetzt wird. Die fehlerhafte Auswertung kann auf den subtilen Unterschied zwischen == und === zurückgeführt werden. == führt eine Typkonvertierung durch, während === auf strikte Gleichheit prüft, einschließlich des Datentyps.
Mit === wird sichergestellt, dass der Vergleich auf den tatsächlichen Datenwerten, einschließlich ihrer Typen, basiert. Im bereitgestellten Code wird durch das Ersetzen von == durch === 0 korrekt als ungleich „e“ ausgewertet, wenn der Preis auf 0 gesetzt ist.
Hinweise zu PHP-Versionsänderungen:
In PHP 8 hat sich das Vergleichsverhalten geändert. Beim Vergleich numerischer Zeichenfolgen mit Zahlen verwendet PHP jetzt einen numerischen Vergleich. Andernfalls wandelt PHP Zahlen in Zeichenfolgen um, bevor der Vergleich durchgeführt wird.
Beispielcode mit ===:
$item['price'] = 0; /* Code to get item information goes in here */ if($item['price'] === 'e') { $item['price'] = -1; }
Mit dieser Korrektur bestimmt der Code genau, ob Der Preis soll 0 oder ein Austausch-„e“ sein, um eine ordnungsgemäße Handhabung der Artikelpreise sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum erzeugt der PHP-Operator „==' beim Vergleich von 0 und Strings unerwartete Ergebnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!