Dlaczego mój trójskładnikowych wyrażenie nie działa?

głosy
21

Próbuję ustawić flagę, aby pokazać lub ukryć element strony, ale zawsze wyświetla nawet gdy wyrażenie jest fałszywe.

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

Co tam?

Utwórz 05/08/2008 o 01:56
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
2

Wartość „false” jest prawdziwe. Trzeba usunąć cytaty:

$canMerge = ($condition1 && $condition2) ? true : false;
Odpowiedział 05/08/2008 o 01:57
źródło użytkownik

głosy
37

To jest zepsuty bo „false” jako ciąg oceni true jako wartość logiczną.

Jednakże, jest to niepotrzebne trójskładnikowych wyrażenie, ponieważ otrzymane wartości są proste, prawdziwe i fałszywe. Byłoby to równoważne:

$canMerge = ($condition1 && $condition2);
Odpowiedział 05/08/2008 o 02:03
źródło użytkownik

głosy
0

Wydaje mi się uzasadnione pytanie, zwłaszcza ze względu na rozbieżności w sposobie PHP działa.

Na przykład, następujący kod wyjścia „jego fałszywe”

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Odpowiedział 28/09/2012 o 04:15
źródło użytkownik

głosy
-1
$canMerge = ($condition1 && $condition2);

następnie

if ($canMerge){
    echo "Stuff";
}
Odpowiedział 16/05/2014 o 19:50
źródło użytkownik

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