O código a seguir não imprime nada:
$bool_val = (bool)false;
echo $bool_val;
Mas o seguinte código é impresso 1
:
$bool_val = (bool)true;
echo $bool_val;
Existe uma maneira melhor de imprimir 0
ou false
quando $bool_val
é false
adicionar uma if
declaração?
(bool)
elenco é redundante, você não precisa bool elenco para bool:(bool) true === true
.echo 0==1;
saídas0
oufalse
?Respostas:
Ou se você deseja apenas saída quando for falsa:
fonte
FALSE == ''
. É perfeitamente válido e faz parte de outras línguas, incluindo javascript. O que é estranho é o padrão FALSE para uma string vazia. Deve ser o padrão 0. Sempre. Especialmente porque TRUE sempre assumirá o padrão 1. Isso quebra uma regra fundamental da programação. Mantenha seu código consistente. Isso é claramente um bug.!! '0'
avaliefalse
em PHP, estátrue
em JS.!! ""
é falso em JS e PHP.Esta é a maneira mais fácil de fazer isso:
ou
Se o segundo argumento não for verdadeiro, ele produzirá o resultado diretamente.
fonte
Não, já que a outra opção é modificar o mecanismo do Zend, e seria difícil pressionar para chamar isso de "maneira melhor".
Editar:
Se você realmente quisesse, poderia usar uma matriz:
fonte
Isso imprimirá o valor booleano como está, em vez de 1/0.
fonte
Tente converter seu booleano em um número inteiro?
fonte
Eu gosto deste para imprimir isso
fonte
var_export
fornece a funcionalidade desejada.Isso sempre imprimirá um valor em vez de imprimir nada para
null
oufalse
.var_export
imprime uma representação em PHP do argumento passado, a saída pode ser copiada / colada de volta no PHP.Se você deseja imprimir strings
"true"
ou"false"
, pode converter para um booleano como abaixo, mas cuidado com as peculiaridades:fonte
Isso fornece
0
ou1
:Manual do PHP: função intval
fonte
Quando
$var
é variável booleanatrue
oufalse
será impressa.fonte
var_export
nesse caso, ecoará seu resultado e retornará nulo; portanto, var_export está exibindo otrue || false
eecho
está ecoandonull
(''
). Para retornar a saída devar_export
, você precisa fornecer um segundo parâmetro comotrue
.json_encode
é uma opção melhor.Você pode usar um operador ternário
fonte
A
%b
opção de sprintf () converterá um booleano em um número inteiro:Se você não estiver familiarizado com isso: você pode atribuir a essa função uma quantidade arbitrária de parâmetros, enquanto o primeiro deve ser sua string de saída temperada com strings de substituição como
%b
ou%s
para a substituição geral de strings.Cada padrão será substituído pelo argumento na ordem:
fonte
O json_encode fará isso imediatamente, mas não é bonito (recuado, etc):
... dá ...
fonte
usar no script
fonte
Você está convertendo um booleano em booleano e esperando que um número inteiro seja exibido. Funciona para,
true
mas não para falso. Como você espera um número inteiro:fonte