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 é:
// simplest, most-readable
if (is_bool($res) {
$res = $res ? 'true' : 'false';
}
// same as above but written more tersely
$res = is_bool($res) ? ($res ? 'true' : 'false') : $res;
// Terser still, but completely unnecessary function call and must be
// commented due to poor readability. What is var_export? What is its
// second arg? Why are we exporting stuff?
$res = is_bool($res) ? var_export($res, 1) : $res;
Porém, a maioria dos desenvolvedores que leem seu código exigirá uma visita a http://php.net/var_export para entender o que osvar_export
faz e qual é o segundo parâmetro.
1 var_export
Funciona para boolean
entrada, mas também converte todo o resto em uma string
.
// OK
var_export(false, 1); // 'false'
// OK
var_export(true, 1); // 'true'
// NOT OK
var_export('', 1); // '\'\''
// NOT OK
var_export(1, 1); // '1'
2) ($res) ? 'true' : 'false';
Funciona para entrada booleana, mas converte todo o resto (ints, strings) em true / false.
// OK
true ? 'true' : 'false' // 'true'
// OK
false ? 'true' : 'false' // 'false'
// NOT OK
'' ? 'true' : 'false' // 'false'
// NOT OK
0 ? 'true' : 'false' // 'false'
3) json_encode()
Os mesmos problemas var_export
e, provavelmente, pior, já json_encode
que não é possível saber se a string true
foi criada como uma string ou um booleano.