Όλα ξεκίνησαν όταν αποφάσισα να χρησιμοποιήσω την array_search():
Η συνάρτηση αυτή όπως ίσως υποπτεύεται κανείς ψάχνει έναν πίνακα για ένα στοιχείο και αν το βρει επιστρέφει τη θέση στην οποία βρέθηκε ή -αν δεν το βρει- επιστρέφει false.
Ακολουθεί λανθασμένο παράδειγμα (σχεδόν παρόμοιο με αυτό που παιδευόμουν χθες) :
$found = array_search($timi, $pinakas); if($found) { echo 'Vrethike!'; }
Αν στο παραπάνω κομμάτι κώδικα η τιμή που ψάχνουμε είναι στον πίνακα δουλεύει κανονικά ΕΚΤΟΣ από την περίπτωση που είναι στην πρώτη θέση (τη θέση 0) του πίνακα.
Επειδή το 0 θεωρείται ως false, αν η τιμή που δώσαμε βρεθεί στη θέση αυτή τότε ο παραπάνω κώδικας δεν θα δουλέψει.
Για να δουλέψει πρέπει να κάνουμε χρήση του τελεστή '==='.
Επειδή η PHP είναι πολύ χαλαρή σε θέματα τύπων μεταβλητών το διπλό ίσον μπορεί να επιστρέψει true σε διάφορες περιπτώσεις:
$i = 3; //arithmos $j = "3"; //string if($i == $j) //isxuei i isotita { echo 'It works!'; }
Κάνοντας χρήση του 3πλού '=' αποφεύγουμε τέτοια προβλήματα:
$i = 3; //arithmos $j = "3"; //string if($i === $j) //den isxuei i isotita { echo 'It works!'; }
Βάσει αυτών το πρώτο -λανθασμένο- κομμάτι κώδικα γίνεται:
$found = array_search($timi, $pinakas); if($found === false) { echo 'Vrethike!'; }
Τον τελεστή 8=====) έπρεπε να βάλεις!
ReplyDeleteΤι 'ναι αυτά ρε παιδιά??? Εγώ κάτι για μπύρες είδα και μπήκα! :ΡΡΡ
ReplyDelete@natasssa Μααα... για μπύρες γράφει!
ReplyDeleteΠού? Καθοδήγησέ με :Ρ
ReplyDelete