Χρήση του ή του φορέα εκμετάλλευσης σε php;

ψήφοι
4

Ο κώδικας που ακολουθεί:

  $result = (false or true);
  echo(With extra parentheses: .($result?true:false));
  $result = false or true;
  echo(<br />With no parentheses: .($result?true:false));

παράγει την έξοδο:

With extra parentheses: true
With no parentheses: false

Δεν καταλαβαίνω γιατί. Δεν θα έπρεπε php αξιολόγηση $result = false or true;από την πρώτη δοκιμή falseκαι, στη συνέχεια, δεδομένου ότι δεν είναι αλήθεια, συμβαίνει να αξιολογήσει true;

Οποιεσδήποτε προτάσεις θα ήταν πολύ ευπρόσδεκτη.

Δημοσιεύθηκε 22/06/2011 στις 16:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
14

Ο orφορέας εκμετάλλευσης έχει μια πιο αδύναμη προτεραιότητα από τον τελεστή ανάθεσης. Τι πραγματικά συμβαίνει στη δεύτερη περίπτωση είναι ($result = false) or true, τόσο το μέρος or trueέχει πραγματικά κανένα αποτέλεσμα.

Ο χειριστής ανάθεσης αποδίδει την καθορισμένη τιμή ως αποτέλεσμα της, falseσε αυτή την περίπτωση. Σκεφτείτε το φορέα ανάθεσης ως ένα συνηθισμένο δυαδικό φορέα που αποδίδει ένα αποτέλεσμα (όπως +, <και or), με τη μόνη διαφορά ότι έχει μια παρενέργεια.

Αν θέλετε να αποφύγετε τις παρενθέσεις, μπορείτε να ανταλλάξετε orγια ||, το οποίο έχει μια ισχυρότερη προτεραιότητα.

Πάντα να είστε προσεκτικοί όταν χρησιμοποιείτε τις αγγλικές εκδόσεις των λογικούς τελεστές, γιατί προτεραιότητα τους είναι διαφορετική.

Απαντήθηκε 22/06/2011 στις 16:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more