Eu tenho uma variável booleana que eu quero converter em uma string:
$res = true;
Eu preciso que o valor convertido esteja no formato:, "true" "false"
não"0" "1"
$converted_res = "true";
$converted_res = "false";
Eu tentei:
$converted_res = string($res);
$converted_res = String($res);
Mas isso me diz que string
e String
não são funções reconhecidas.
Como faço para converter esse booleano em uma string no formato "true"
ou "false"
no PHP?
Respostas:
Solução mais simples:
$converted_res = $res ? 'true' : 'false';
fonte
?:
notação é o código mais simplificado que podemos apresentar nessa situação.echo '<active>' . $res ? 'true' : 'false' . '</active>';
não produz o resultado desejado,echo '<active>' . ($res ? 'true' : 'false') . '</active>';
produz.A função var_export retorna uma representação de string de uma variável, para que você possa fazer isso:
O segundo argumento diz à função para retornar a string em vez de repeti-la.
fonte
Outra maneira de fazer:
json_encode( booleanValue )
fonte
var_export()
é mais em sintonia com a intenção da operação (a menos que alguém está precisando da corda para alguns JSON, que é ;-)Consulte var_export
fonte
edit
para incluir informações relevantes a partir do link no seu post. Embora as informações sejam úteis, elas são deixadas de maneira mais apropriada como um "Comentário" para o OP. Todas as informações necessárias do link devem ser incorporadas na resposta. 1) Se o link se tornar inacessível, esta postagem se tornará inútil. 2) os visitantes não devem ser obrigados a visitar links externos, apenas para descobrirem eles mesmos. Dito isto, links para documentação, fontes ou informações adicionais são altamente incentivados. Obrigado pela sua contribuição.Você usa strval () ou (string) para converter em string no PHP. No entanto, isso não converte booleano na ortografia real de "verdadeiro" ou "falso", portanto, você deve fazer isso sozinho. Aqui está um exemplo de função:
fonte
$val = true;
entãostrval($val)
e(string) $val
ambos retornam 1.As outras soluções aqui têm advertências (embora abordem a questão em questão). Se você estiver (1) repetindo tipos mistos ou (2) quiser uma solução genérica que possa exportar como uma função ou incluir em seus utilitários, nenhuma das outras soluções aqui funcionará.
A solução mais simples e mais auto-explicativa é:
Porém, a maioria dos desenvolvedores que leem seu código exigirá uma visita a http://php.net/var_export para entender o que os
var_export
faz e qual é o segundo parâmetro.1
var_export
Funciona para
boolean
entrada, mas também converte todo o resto em umastring
.2)
($res) ? 'true' : 'false';
Funciona para entrada booleana, mas converte todo o resto (ints, strings) em true / false.
3)
json_encode()
Os mesmos problemas
var_export
e, provavelmente, pior, jájson_encode
que não é possível saber se a stringtrue
foi criada como uma string ou um booleano.fonte
var_export()
parece ser o melhor para o caso de uso específico, obrigado.var_export(boolval($var), true)
é uma rota de maneira segura de transformar o valor nas cadeias "true" ou "false".if (is_bool($res) { $res = $res ? 'true' : 'false'; }
<< isto não vai funcionar - faltando)
talvez a sua melhor utilização$result = (is_bool($var) && $var) ? 'true' : 'false';
$value = is_bool($value) ? var_export($value, true) : $value;
Desta forma, vivo o valor intacto e apenas altero o booleano para sua representação de string.$res = $res
?? Você quis dizer$res == $res
:? Ou até$res === $res
:?Por que simplesmente não fazer assim ?:
fonte
Para mim, eu queria uma representação de string, a menos que fosse
null
, nesse caso, queria que ela permanecessenull
.O problema com var_export é que ele converte
null
em uma string"NULL"
e também converte uma string vazia em"''"
, o que é indesejável. Não havia solução fácil que eu pudesse encontrar.Este foi o código que finalmente usei:
Curto, simples e fácil de executar uma função também, se você preferir.
fonte
boolval()
funciona para tabelas complicadas nas quais declarar variáveis e adicionar loops e filtros não funcionam. Exemplo:onde
$tmp
é uma chave usada para transpor outros dados. Aqui, eu queria que a tabela exibisse "Sim" para 1 e nada para 0, então usado(boolval($row['special_case']) ? 'Yes' : '')
.fonte
boolval(some_expression) ? .. : ..
comporta de maneira diferentesome_expression ? .. : ..
?Isso funciona também para qualquer tipo de valor:
código:
fonte
Editado com base na sugestão @ sebastian-norr, apontando que a
$bool
variável pode ou não ser verdadeira0
ou1
. Por exemplo,2
resolve aotrue
executá-lo através de um teste booleano em PHP.Como solução, usei a conversão de tipo para garantir a conversão
$bool
para0
ou1
.Mas tenho que admitir que a expressão simples
$bool ? 'true' : 'false'
é muito mais limpa.Minha solução usada abaixo nunca deve ser usada, LOL.
Aqui está por que não ...
Para evitar repetições, a matriz que contém a representação de string do Boolean pode ser armazenada em uma constante que pode ser disponibilizada em todo o aplicativo.
fonte
Eu não sou um fã da resposta aceita, pois converte qualquer coisa que seja avaliada como falsa em
"false"
não apenas booleana e vice-versa.Enfim, aqui está a minha resposta OTT, ele usa a
var_export
funçãovar_export
funciona com todos os tipos de variáveisresource
, exceto , eu criei uma função que executará uma conversão regular para string ((string)
), uma conversão estrita (var_export
) e uma verificação de tipo, dependendo dos argumentos fornecidos.fonte
fonte
isset
não é necessário aqui. No php,if
-test é falso para ambosnull
evariable not defined
. Pode simplesmente fazer o$converted_res = ( $res ? 'true' : 'false' );
que é visto em respostas mais antigas.fonte
Só queria atualizar, em PHP> = 5,50 você pode
boolval()
fazer a mesma coisaReferência aqui .
fonte
(bool) $var;
"<td>" . (boolval($row['special_case']) ? 'Yes' : ' ') . "</td>"
boolval()
segue o caminho inverso, convertendo uma variável de qualquer tipo em bool, não bool em string.