Primerjava nizov z uporabo == proti strcmp
Zdi se, da je operator ===
v PHP občutljiv na velike in male črke? Ali je torej kakšen razlog za uporabo strcmp()
? Ali je varno narediti nekaj takega:
if ( $password === $password2 ) { ... }
322
3
Razlog za njegovo uporabo je, da
strcmp
===
vrne letrue
alifalse
, ne pove pa, kateri niz je "večji".Uporaba
==
je lahko nevarna.Upoštevajte, da bi spremenljivko spremenila v drug podatkovni tip, če bi se ta dva razlikovala.
Primeri:
echo (1 == true) ? 'true' : 'false';
Kot lahko vidite, sta ta dva tipa različna, vendar je rezultat
true
, kar morda ni tisto, kar bo vaša koda pričakovala.Uporaba
===
je vseeno priporočljiva, saj je test pokazal, da je nekoliko hitrejša odstrcmp()
in njegove alternativestrcasecmp()
, ki ne upošteva velikosti črk.Hitro googlanje pokaže tole primerjavo hitrosti: http://snipplr.com/view/758/
Uporabite lahko
strcmp()
, če želite razvrstiti ali primerjati nize leksikografsko. Če želite samo preveriti enakost, je==
povsem v redu.