Φαίνεται ότι ο τελεστής ===
της PHP's είναι ευαίσθητος στην πεζότητα? Έτσι, υπάρχει κάποιος λόγος να χρησιμοποιήσετε την strcmp()
; Είναι ασφαλές να κάνουμε κάτι τέτοιο:
if ( $password === $password2 ) { ... }
Ο λόγος που το χρησιμοποιείτε είναι επειδή strcmp
επιστρέφει < 0 αν το str1 είναι μικρότερο από το str2, > 0 αν το str1 είναι μεγαλύτερο από το str2 και 0 αν είναι ίσα.
Το ===
επιστρέφει μόνο true
ή false
, δεν σας λέει ποια είναι η "μεγαλύτερη" συμβολοσειρά.
Η χρήση του ==
μπορεί να είναι επικίνδυνη.
Σημειώστε, ότι θα μετατρέψει τη μεταβλητή σε άλλο τύπο δεδομένων, εάν οι δύο διαφέρουν.
Παραδείγματα:
echo (1 == true) ? 'true' : 'false';
Όπως μπορείτε να δείτε, αυτά τα δύο είναι από διαφορετικούς τύπους, αλλά το αποτέλεσμα είναι true
, το οποίο μπορεί να μην είναι αυτό που θα περιμένει ο κώδικάς σας.
Η χρήση της ===
, ωστόσο, συνιστάται καθώς η δοκιμή δείχνει ότι είναι λίγο πιο γρήγορη από την strcmp()
και την εναλλακτική της χωρίς ευαισθησία στην πεζότητα strcasecmp()
.
Το γρήγορο ψάξιμο στο google λέει αυτή τη σύγκριση ταχύτητας: http://snipplr.com/view/758/
Μπορείτε να χρησιμοποιήσετε την strcmp()
αν θέλετε να διατάξετε/συγκρίνετε συμβολοσειρές λεξικογραφικά. Αν θέλετε απλώς να ελέγξετε την ισότητα, τότε το ==
είναι μια χαρά.