Hvorfor er min trefoldig uttrykk ikke fungerer?

stemmer
22

Jeg prøver å sette et flagg for å vise eller skjule en side element, men det viser alltid selv når uttrykket er usant.

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

Hva skjer?

Publisert på 05/08/2008 klokken 00:56
kilden bruker
På andre språk...                            


4 svar

stemmer
38

Dette er brutt fordi 'falske' som en streng vil vurdere å sant som en boolsk.

Men dette er en unødvendige ternære uttrykk, fordi de resulterende verdier er enkel sanne og falske. Dette ville være tilsvarende:

$canMerge = ($condition1 && $condition2);
Svarte 05/08/2008 kl. 01:03
kilden bruker

stemmer
2

Verdien av 'falske' er sant. Du må fjerne sitater:

$canMerge = ($condition1 && $condition2) ? true : false;
Svarte 05/08/2008 kl. 00:57
kilden bruker

stemmer
0

Virker for meg et rimelig spørsmål spesielt på grunn av avvik i måten PHP fungerer.

For eksempel er den følgende kode vil output 'dens falske'

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Svarte 28/09/2012 kl. 03:15
kilden bruker

stemmer
-1
$canMerge = ($condition1 && $condition2);

deretter

if ($canMerge){
    echo "Stuff";
}
Svarte 16/05/2014 kl. 18:50
kilden bruker

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