boolval()
Conheça a função boolval() do PHP, que converte qualquer valor para seu equivalente boolean, com exemplos práticos e boas práticas.
Introdução
A função boolval() no PHP é uma função de conversão de tipos que transforma qualquer valor no seu equivalente boolean — true ou false. Introduzida no PHP 5.5, ela segue as mesmas regras que o PHP usa sempre que um valor é interpretado como condição (como dentro de uma instrução if), sendo assim uma forma clara e explícita de perguntar "este valor é truthy?".
boolval() faz exatamente a mesma coisa que o cast (bool). A razão de existir é que, ao contrário de um cast, uma função pode ser passada como callback — por exemplo para array_map() — o que um construtor de linguagem como (bool) não pode.
Esta página abrange a sintaxe, o que cada tipo converte, como boolval() se compara ao cast (bool), e as armadilhas comuns (como a string "0").
Sintaxe Básica
A sintaxe básica da função boolval() é a seguinte:
Sintaxe básica da função PHP boolval()
boolval(mixed $value): boolO parâmetro $value é o valor a ser convertido. A função sempre retorna um boolean: true para qualquer valor truthy e false para qualquer valor falsy. Ela não tem efeitos colaterais e nunca lança exceções.
Quais valores são falsy?
O PHP trata apenas um conjunto fixo de valores como false. Tudo o mais é true. Memorizar esta lista curta é a chave para usar boolval() corretamente:
falseem si- o inteiro
0e o float0.0(e-0.0) - a string vazia
""e a string"0" - o array vazio
[] null- uma variável não definida / indefinida
A string "0" é a armadilha clássica: ela não é vazia, mas o PHP a considera falsy. Note que "0.0", " " (um espaço) e "false" são todas strings truthy.
Exemplo de Uso
Aqui está um exemplo de como a função boolval() pode ser usada em PHP:
Exemplo de uso do PHP boolval()
Aqui boolval() converte $var1 (um inteiro não nulo) para true e $var2 (zero) para false. Envolvemos o resultado em var_export() para que o boolean seja impresso como o texto literal true / false — um simples echo imprimiria 1 para true e nada para false, o que torna os resultados difíceis de ler.
boolval() vs o cast (bool)
Para converter um único valor, boolval($x) e (bool) $x são intercambiáveis e produzem resultados idênticos:
<?php
$value = "0";
var_export(boolval($value)); // false
echo "\n";
var_export((bool) $value); // falseEntão quando você deve usar boolval() em vez de (bool)? Sempre que precisar passar a conversão como um callable. Um cast é um construtor de linguagem, não uma função, portanto não pode ser passado para funções de ordem superior como array_map() ou array_filter(). boolval pode:
Filtrando um array para seus valores truthy
Cada elemento é convertido para um boolean. 1, "hello" e [1] tornam-se true; o restante — incluindo o enganoso "0" — torna-se false.
Armadilha comum: a string "0"
Como boolval() espelha as regras de truthiness do PHP, a string "0" é avaliada como false. Isso pega de surpresa o código que valida entrada do usuário, já que os campos de formulário sempre chegam como strings:
<?php
$input = "0"; // e.g. $_POST['quantity']
if (boolval($input)) {
echo "treated as true\n";
} else {
echo "treated as false\n"; // this branch runs
}Se você realmente quer saber "esta string não é vazia?" em vez de "este valor é truthy?", compare explicitamente com "" usando uma verificação estrita ($input !== "") em vez de depender de boolval().
Boas Práticas para Usar boolval()
Para garantir um uso eficiente da função boolval() em PHP, é importante seguir algumas boas práticas:
Use comparações estritas
Ao usar a função boolval(), é importante usar comparações estritas (===) em vez de comparações soltas (==). Isso porque comparações soltas podem resultar em comportamentos inesperados.
Use tipos de variáveis adequados
Ao usar a função boolval(), é importante garantir que a variável sendo convertida seja do tipo adequado. Para mais detalhes sobre como diferentes tipos de dados se convertem para booleans, consulte o manual do PHP sobre conversão de tipos.
Referência de conversão de tipos
Entender como os diferentes tipos do PHP convertem para booleans ajuda a evitar resultados inesperados:
| Tipo | Converte para true quando | Converte para false quando |
|---|---|---|
string | String não vazia | String vazia "" |
int / float | Valor não nulo | 0 ou 0.0 |
array | Array não vazio | Array vazio [] |
null | Nunca | Sempre |
Funções relacionadas
boolval() é uma das funções auxiliares de conversão de tipos da família PHP. Use aquela que corresponde ao tipo que você precisa:
intval()— converter um valor para inteiro.floatval()— converter um valor para float.strval()— converter um valor para string.settype()— alterar o tipo de uma variável no lugar.gettype()/is_bool()— inspecionar o tipo atual de uma variável.
Para uma visão geral mais ampla de como os valores transitam entre tipos, veja tipos de dados PHP.
Conclusão
boolval() converte qualquer valor para um boolean usando as regras padrão de truthiness do PHP, retornando false apenas para a lista curta e fixa de valores falsy (false, 0, 0.0, "", "0", [], null e variáveis não definidas) e true para tudo o mais. Ela se comporta exatamente como o cast (bool), com o benefício adicional de poder ser usada como callback em funções como array_map(). Tenha em mente a armadilha do "0" ao validar entrada de string e prefira comparações estritas quando precisar de controle preciso.