Las otras soluciones aquí todos tienen advertencias (a pesar de que abordan la cuestión que nos ocupa). Si (1) realiza un bucle sobre tipos mixtos o (2) desea una solución genérica que puede exportar como una función o incluirla en sus utilidades, ninguna de las otras soluciones aquí funcionará.
La solución más simple y explica por sí mismo es:
// 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;
Pero la mayoría de los desarrolladores de la lectura de su código requerirá un viaje a http://php.net/var_export entender lo que el var_export
hace y lo que es el segundo parámetro.
1. var_export
Obras para boolean
de entrada, pero la convierte todo lo demás a un string
también.
// 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';
Obras para la entrada booleana, pero la convierte todo lo demás (intercepciones, cuerdas) a verdadero/falso.
// OK
true ? 'true' : 'false' // 'true'
// OK
false ? 'true' : 'false' // 'false'
// NOT OK
'' ? 'true' : 'false' // 'false'
// NOT OK
0 ? 'true' : 'false' // 'false'
3. json_encode()
mismos problemas que var_export
y probablemente peor desde json_encode
no se puede saber si la cadena true
se pretende una cadena o un valor lógico.
reciente función de su uso ((string) $ parámetro [tipo booleano]) {if ($ param) {....}} porque (string) false => "falso" no es falsa ... – zloctb