Poniższy kod niczego nie drukuje:
$bool_val = (bool)false;
echo $bool_val;
Ale następujący kod drukuje 1
:
$bool_val = (bool)true;
echo $bool_val;
Czy jest lepszy sposób na wydrukowanie 0
lub false
kiedy $bool_val
jest false
niż dodanie if
oświadczenia?
(bool)
Obsada jest zbędny, nie trzeba oddanych bool bool:(bool) true === true
.echo 0==1;
wyświetlało0
lubfalse
?Odpowiedzi:
Lub jeśli chcesz wyświetlać tylko wtedy, gdy jest fałszywe:
źródło
FALSE == ''
. Jest całkowicie poprawny i jest częścią innych języków, w tym javascript. Dziwne jest to, że FALSE domyślnie przyjmuje pusty ciąg. Powinien mieć wartość domyślną 0. Zawsze. Zwłaszcza, że TRUE zawsze będzie domyślnie równe 1. To łamie podstawową zasadę programowania. Zachowaj spójność kodu. To wyraźnie błąd.!! '0'
ocenia się nafalse
w PHP, jesttrue
w JS.!! ""
jest fałszem w JS i PHP.Oto najłatwiejszy sposób:
lub
Jeśli drugi argument nie jest prawdziwy, wyświetli wynik bezpośrednio.
źródło
Nie, ponieważ drugą opcją jest modyfikacja silnika Zend i trudno byłoby nazwać to „lepszym sposobem”.
Edytować:
Jeśli naprawdę chcesz, możesz użyć tablicy:
źródło
Spowoduje to wydrukowanie wartości logicznej taką, jaka jest, zamiast 1/0.
źródło
Spróbuj przekonwertować wartość logiczną na liczbę całkowitą?
źródło
Podoba mi się ten, żeby to wydrukować
źródło
var_export
zapewnia pożądaną funkcjonalność.Spowoduje to zawsze wydrukowanie wartości zamiast drukowania niczego dla
null
lubfalse
.var_export
drukuje reprezentację PHP przekazanego argumentu, wyjście może zostać skopiowane / wklejone z powrotem do PHP.Jeśli chcesz wydrukować ciągi
"true"
lub"false"
, możesz rzutować na wartość logiczną, jak poniżej, ale uważaj na osobliwości:źródło
To daje
0
lub1
:Podręcznik PHP: funkcja intval
źródło
Kiedy
$var
jest zmienną boolowskątrue
lubfalse
zostanie wydrukowane.źródło
var_export
w tym przypadku wyświetli wynik i zwróci wartość null, więc var_export wypisujetrue || false
iecho
wykonuje echonull
(''
). Aby zwrócić dane wyjściowe zvar_export
, musisz podać drugi parametr jakotrue
.json_encode
jest lepszą opcją.Możesz użyć operatora trójskładnikowego
źródło
%b
Możliwość sprintf () konwertuje wartość logiczną do całkowitej:Jeśli nie jesteś zaznajomiony z tym: możesz nadać tej funkcji dowolną liczbę parametrów, podczas gdy pierwszy z nich powinien być ciągiem wyjściowym doprawionym ciągami zastępczymi, takimi jak
%b
lub%s
do ogólnej zamiany ciągów.Każdy wzorzec zostanie zastąpiony argumentem w kolejności:
źródło
json_encode zrobi to zaraz po wyjęciu z pudełka, ale nie jest ładny (z wcięciem itp.):
... daje ...
źródło
użyj w skrypcie
źródło
Rzucasz boolean na boolean i oczekujesz wyświetlenia liczby całkowitej. To działa,
true
ale nie jest fałszywe. Ponieważ oczekujesz liczby całkowitej:źródło