Domanda

Sto cercando di impostare un flag per mostrare o nascondere un elemento della pagina, ma viene sempre visualizzato anche quando l'espressione è falsa.

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

Che cosa succede?

È stato utile?

Soluzione

Questo non funziona perché "false" come stringa verrà valutato come vero come valore booleano.

Tuttavia, questa è un'espressione ternaria non necessaria, perché i valori risultanti sono semplici true e false.Questo sarebbe equivalente:

$canMerge = ($condition1 && $condition2);

Altri suggerimenti

Il valore di "falso" è vero.È necessario rimuovere le virgolette:

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

Mi sembra una domanda ragionevole soprattutto a causa della discrepanza nel modo in cui funziona PHP.

Ad esempio, il seguente codice restituirà "è falso"

$a = '0';

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

Poi

if ($canMerge){
    echo "Stuff";
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top