Det ser ut til at PHPs ===
operator er sensitiv for store og små bokstaver? Så er det noen grunn til å bruke strcmp()
? Er det trygt å gjøre noe som:
if ( $password === $password2 ) { ... }
Grunnen til å bruke det er fordi strcmp
returnerer < 0 hvis str1 er mindre enn str2; > 0 hvis str1 er større enn str2, og 0 hvis de er like.
===
returnerer bare true
eller false
, den forteller deg ikke hvilken streng som er størst.
Det kan være farlig å bruke ==
.
Merk at det vil kaste variabelen til en annen datatype hvis de to er forskjellige.
Eksempler:
echo (1 == '1') ? 'true' : 'false';
Som du kan se, er disse to fra forskjellige typer, men resultatet er true
, noe som kanskje ikke er hva koden din forventer.
Det anbefales imidlertid å bruke ===
, da testen viser at det er litt raskere enn strcmp()
og det case-ufølsomme alternativet strcasecmp()
.
En rask googling gir denne hastighetssammenligningen: http://snipplr.com/view/758/
Du kan bruke strcmp()
hvis du ønsker å ordne/sammenligne strenger leksikografisk. Hvis du bare ønsker å sjekke for likhet, er ==
helt greit.