Γιατί είναι τριαδική έκφραση μου δεν λειτουργεί;

ψήφοι
21

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

$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>

Ποια είναι τα νέα σου?

Δημοσιεύθηκε 05/08/2008 στις 01:56
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
37

Αυτό είναι σπασμένα, διότι «ψευδή» ως ένα string θα αξιολογήσει την πραγματική ως boolean.

Ωστόσο, αυτό είναι ένα αχρείαστα τριαδική έκφραση, γιατί οι τιμές που προκύπτουν είναι απλά αληθινό και το ψεύτικο. Αυτό θα ισοδυναμούσε:

$canMerge = ($condition1 && $condition2);
Απαντήθηκε 05/08/2008 στις 02:03
πηγή χρήστη

ψήφοι
2

Η αξία των «ψευδών» είναι αλήθεια. Θα πρέπει να αφαιρέσετε τα εισαγωγικά:

$canMerge = ($condition1 && $condition2) ? true : false;
Απαντήθηκε 05/08/2008 στις 01:57
πηγή χρήστη

ψήφοι
0

Μου φαίνεται ένα λογικό ερώτημα, ιδίως λόγω της διαφοράς με τον τρόπο PHP λειτουργεί.

Για παράδειγμα, ο ακόλουθος κώδικας θα εμφανίσει «της ψευδούς»

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Απαντήθηκε 28/09/2012 στις 04:15
πηγή χρήστη

ψήφοι
-1
$canMerge = ($condition1 && $condition2);

έπειτα

if ($canMerge){
    echo "Stuff";
}
Απαντήθηκε 16/05/2014 στις 19:50
πηγή χρήστη

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