Proč je moje ternární výraz nefunguje?

hlasů
21

Snažím se nastavit příznak, aby zobrazoval nebo nezobrazoval prvek stránky, ale vždy se zobrazí iv případě, že výraz je nepravdivý.

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

Co se děje?

Položena 05/08/2008 v 01:56
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
37

To je přerušeno, protože ‚false‘ jako řetězec vyhodnotí na true jako logickou hodnotu.

Nicméně, toto je nepotřebné ternární výraz, protože výsledné hodnoty jsou jednoduché pravdivé a falešné. To by znamenalo:

$canMerge = ($condition1 && $condition2);
Odpovězeno 05/08/2008 v 02:03
zdroj uživatelem

hlasů
2

Hodnota ‚false‘, je pravda. Je třeba odstranit uvozovky:

$canMerge = ($condition1 && $condition2) ? true : false;
Odpovězeno 05/08/2008 v 01:57
zdroj uživatelem

hlasů
0

Zdá se mi rozumné otázka, zejména z důvodu nesrovnalosti ve způsobu, jakým PHP funguje.

Například následující výstup kód ‚falešnou‘

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Odpovězeno 28/09/2012 v 04:15
zdroj uživatelem

hlasů
-1
$canMerge = ($condition1 && $condition2);

pak

if ($canMerge){
    echo "Stuff";
}
Odpovězeno 16/05/2014 v 19:50
zdroj uživatelem

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