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 ) { ... }
Razlog za njegovo uporabo je, da strcmp
vrne < 0, če je str1 manjši od str2; > 0, če je str1 večji od str2, in 0, če sta enaka.
===
vrne le true
ali false
, 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 od strcmp()
in njegove alternative strcasecmp()
, 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.