Sembra che l'operatore ===
di PHP sia case sensitive? Quindi c'è qualche ragione per usare strcmp()
? È sicuro fare qualcosa come
if ( $password === $password2 ) { ... }
La ragione per usarlo è che strcmp
restituisce 0 se str1 è minore di str2; 0 se str1 è maggiore di str2, e 0 se sono uguali.
===
restituisce solo vero
o falso
, non ti dice quale sia la stringa "maggiore".
Usare ==
potrebbe essere pericoloso.
Notate, che casterebbe la variabile in un altro tipo di dati se i due differiscono.
Esempi:
echo (1 == '1') ? 'true' : 'false';
echo (1 == true) ? 'true' : 'false';
Come potete vedere, questi due sono di tipi diversi, ma il risultato è true
, che potrebbe non essere quello che il vostro codice si aspetta.
L'uso di ===
, tuttavia, è raccomandato in quanto il test mostra che è un po' più veloce di strcmp()
e della sua alternativa case-insensitive strcasecmp()
.
Una rapida ricerca su Google ci dice questo confronto di velocità: http://snipplr.com/view/758/
Potete usare strcmp()
se volete ordinare/confrontare le stringhe lessicograficamente. Se volete solo controllare l'uguaglianza, allora ==
va benissimo.