PHP STRCMP vs == für den String -Vergleich
Um PHP -Zeichenfolgen zu vergleichen, sollten Sie unterschiedliche Methoden entsprechend Ihren Anforderungen auswählen, und Sie können == nicht blind verwenden. Vergleichen Sie es streng mit === und Strcmp () wird für den Vergleich des Wörterbuchauftrags verwendet. 1. == ist unzuverlässig und führt die Typumwandlung durch, was zu unerwarteten Ergebnissen führt, wie z. B. '0E123' == '0' ist wahr; 2. === ist die sicherste Vergleichsmethode, und das Urteil ist vollständig konsistent und der Typ wird nicht konvertiert. 3.. STRCMP () wird verwendet, um Zeichenfolgen in der Wörterbuchreihenfolge zu vergleichen, die -1, 0 und 1 zurückgibt, um Größenbeziehungen darzustellen, und ist fallempfindlich; 4. Sichere Szenarien müssen meiden ==, und === ist besser in der Leistung. Achten Sie beim Vergleich von Null- oder Booleschen Werten besondere Aufmerksamkeit.
Beim Vergleich von Saiten in PHP sind viele Menschen verwirrt über die Verwendung strcmp()
oder des ==
Operators. Tatsächlich sind die Verhaltensweisen der beiden nicht genau gleich, und es gibt Unterschiede in den Nutzungsszenarien.

Um es direkt in den Punkt zu bringen: Wenn Sie einen strengen String -Vergleich durchführen, sollten Sie andere Methoden als ==
Priorisieren. Und strcmp()
hat ihren Anwendungsbereich, ist aber nicht allmächtig.
1. ==
ist kein realer "String -Vergleich"
Sie denken vielleicht, dass das Schreiben 'abc' == 'abc'
ein String -Vergleich ist, aber in einigen Fällen wird PHPs ==
etwas Unerwartetes tun.

Zum Beispiel:
'0e123' == '0' // RETURE TRUE
Dies liegt daran, dass PHP in losen Vergleiche versucht, Strings in Zahlen umzuwandeln. Wenn beide Seiten wie wissenschaftliche Notation aussehen (z. B. mit 0e
), werden sie als schwimmende Punktzahlen behandelt und das Ergebnis 0 == 0
.

Wenn Sie also vergleichen möchten, ob zwei Zeichenfolgen buchstäblich gleich sind , ist ==
nicht zuverlässig.
2. ===
ist eine sicherere Alternative
Wenn Sie nur feststellen möchten, ob die beiden Zeichenfolgen genau gleich sind (einschließlich Fall, Zeichenreihenfolge, Länge usw.), sollten Sie ===
verwenden , was keine Typumwandlung durchführt.
Zum Beispiel:
'ABC' === 'ABC' // True '0e123' === '0' // falsch
Diese Vergleichsmethode ist intuitiver und leichter zu verstehen als strcmp()
. Insbesondere bei der Überprüfung der Benutzereingabe oder der sensiblen Daten (z. B. Kennwort -Hash) ist es erforderlich, einen strengen Vergleich zu verwenden.
3.. Der Zweck von strcmp()
: Sortierung und Fallempfindlichkeit
Was macht strcmp()
? Es wird hauptsächlich verwendet , um Zeichenfolgen in der Wörterbuchreihenfolge zu vergleichen und einen Ganzzahlwert zurückzugeben, um die Größenbeziehung zwischen zwei Zeichenfolgen darzustellen:
- Rückgabewert <0: Die erste Zeichenfolge ist kleiner als die zweite
- Rückgabewert = 0: Zwei Zeichenfolgen sind gleich
- Rückgabewert> 0: Die erste Zeichenfolge ist größer als die zweite
Zum Beispiel:
STRCMP ('Apple', 'Banane') // -1 STRCMP ('Hallo', 'Hallo') // 0
Diese Funktion ist nützlich, wenn Sie sortieren, suchen oder wenn Sie die Reihenfolge der Zeichenfolgen kennen müssen. Und es ist fallsempfindlich, das heißt, 'Apple'
und 'apple'
werden als anders angesehen.
Es gibt auch eine von Fall strcasecmp()
Version, die bei Bedarf ausgewählt werden kann.
4. Kleine Details zu Sicherheit und Leistung
- Sicherheit : Verwenden Sie nicht
==
, um Passwort -Hash oder Token zu vergleichen, da Sie möglicherweise auf magische Hash -Probleme stoßen, was zu falschen Übereinstimmungen führt. - Leistung :
===
ist normalerweise schneller alsstrcmp()
da die Reihenfolge der Zeichenfolge nicht berechnet werden muss. Es muss nur bestimmen, ob sie vollständig konsistent ist. - Beachten Sie die Nullfalle :
==
kann seltsame Ergebnisse erzielen, wenn einer der Operandennull
oder boolean ist. Zum Beispiel ist'abc' == null
true
, aber'abc' === null
ist ein vernünftiges Urteil.
Grundsätzlich ist das. Sie können entscheiden, welche Methode entsprechend den tatsächlichen Bedürfnissen verwendet werden soll:
- Die Entscheidung ist genau konsistent →
===
- Erfordert Wörterbuchanordnung →
strcmp()
- Vergleich der unempfindlichen Ordnung →
strcasecmp()
- Verwenden Sie es niemals in empfindlichen Anlässen
==
Das obige ist der detaillierte Inhalt vonPHP STRCMP vs == für den String -Vergleich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PhparrayShandledatacollectionSeffictionlyusingInedorassociativestruationen;

$ _Cookieisaphpsuperglobalfor AccessingcookieStbytheBrowser; CookiesAresetusingsetcookie () vor dem Output, Readvia $ _cookie ['name'], aktualisiert Byresending mit den Sekton, mit SCURITYBESTPRACTICING, MIT SECURITYBESTPRACTICICING, MIT SECURITYBESTPRECTICE

Auf öffentliche Mitglieder können nach Belieben zugegriffen werden. 2. private Mitglieder können nur innerhalb der Klasse zugegriffen werden. 3.. Geschützte Mitglieder können in Klassen und Unterklassen zugegriffen werden. 4. Die rationale Verwendung kann die Sicherheit und die Wartbarkeit der Code verbessern.

Usedate ('y-m-dh: i: s') witdate_default_timezone_set () togetcurrentDateAnDimeInphp, um sicherzustellen, dass AccurateresultsbySettingThedEredTimeZonelike'america/New_York'beForecallingDate () () sicherstellt.

UseGet_Class ($ Object) TogetTheClassNameAtruntime; 2.UsemyClass :: classforcompile-timeclassNamestrings, insbesondere mit der THNAMEPACKS;

UseError_reporting () toseterrorLevelsinphp, suchase_allfordevelopmentor0forProduction und controldisplayorloggingviaini_set () ToNeNhancedEBugging und Security.

UsedatetimefordateInphp: createwitheNewdatetime (), formatwithFormat (), modifyviaadd () modify (), setTimezoneswithDatetimezone und CompareUSUKTERSORDERSordiff () Togetintervals.

Mithilfe von mySQLI-objektorientierter Methode: Erstellen Sie eine Verbindung, Vorprozess-Update-Anweisungen, binden Sie Parameter, führen Sie die Ergebnisse aus und überprüfen Sie sie schließlich die Ressource. 2. Mithilfe der MySQLI -Prozedurmethode: Verbindung mit der Datenbank über Funktionen herstellen, Anweisungen vorbereiten, Parameter binden, Aktualisierungen durchführen und die Verbindung nach Verarbeitungsfehlern schließen. 3.. Verwenden Sie PDO: Stellen Sie eine Verbindung zur Datenbank über PDO ein, setzen Sie den Ausnahmemodus, stellen Sie SQL vor, binden Sie Parameter, führen Sie Aktualisierungen durch, verwenden Sie Try-Catch, um Ausnahmen zu verarbeiten und schließlich Ressourcen zu veröffentlichen. Verwenden Sie immer Vorverarbeitungsanweisungen, um die SQL -Injektion zu verhindern, die Benutzereingabe zu überprüfen und Verbindungen in der Zeit zu schließen.
