Vă mulțumim pentru susținere

De ce nu funcționează expresia mea ternară?

Încerc să pun un steag pentru a arăta sau a ascunde un element de pagină, dar acesta se afișează întotdeauna chiar și atunci când expresia este falsă.

$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
Stuff

Ce faci?

0
adăugat editat

4 răspunsuri

Valoarea "false" este adevărată. Trebuie să eliminați cotații:

$canMerge = ($condition1 && $condition2) ? true : false;
0
adăugat
Vă mulțumim pentru comentariile dvs. Orlando și Ed. Aceasta a fost o problemă care ma prins afară și am postat-o ​​pentru a mea și pentru beneficiul altora. Răspunzând la propriile întrebări este perfectă pentru întrebările frecvente. Poate ar trebui să te duci să o citești din nou dacă e ceva timp ...
adăugat autor Polsonby
Acest lucru pare a fi o încercare de reputație. Un utilizator 3k-rep care nu poate face diferența între un șir și un boolean, care răspunde întrebării sale un minut după ce o face?
adăugat autor moo

Acest lucru este rupt deoarece "fals" ca un șir va fi evaluat la adevărat ca un boolean.

Cu toate acestea, aceasta este o expresie ternară nefolositoare, deoarece valorile rezultate sunt simple adevărate și false. Acest lucru ar fi echivalent:

$canMerge = ($condition1 && $condition2);
0
adăugat

Mi se pare o întrebare rezonabilă mai ales din cauza discrepanței în modul în care funcționează PHP.

De exemplu, următorul cod va afișa "falsul său"

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
0
adăugat
$canMerge = ($condition1 && $condition2);

apoi

if ($canMerge){
    echo "Stuff";
}
0
adăugat
Acest lucru nu explică de fapt ce este problema, pe care a cerut-o PO.
adăugat autor Wai Ha Lee