Tengo una variable booleana que quiero convertir en una cadena:
$res = true;
Necesito que el valor convertido sea del formato: "true" "false"
no"0" "1"
$converted_res = "true";
$converted_res = "false";
He intentado:
$converted_res = string($res);
$converted_res = String($res);
Pero eso me dice que string
ya String
no son funciones reconocidas.
¿Cómo convierto este booleano en una cadena en formato "true"
o "false"
en PHP?
Respuestas:
La solución más simple:
$converted_res = $res ? 'true' : 'false';
fuente
?:
notación es el código más simplificado que podemos encontrar en esta situación.echo '<active>' . $res ? 'true' : 'false' . '</active>';
no produce el resultado deseado, loecho '<active>' . ($res ? 'true' : 'false') . '</active>';
hace.La función var_export devuelve una representación de cadena de una variable, por lo que podría hacer esto:
El segundo argumento le dice a la función que devuelva la cadena en lugar de repetirla.
fuente
Otra forma de hacer:
json_encode( booleanValue )
fuente
var_export()
es más acorde con la intención de la operación (a menos que uno necesite la cadena para algunos JSON, eso es ;-)Ver var_export
fuente
edit
para incluir información relevante desde el enlace en su mensaje. Si bien la información es útil, se deja más apropiadamente como un "Comentario" para el OP. Toda la información necesaria del enlace debe estar incrustada en la respuesta. 1) Si el enlace se volviera inalcanzable, esta publicación sería inútil. 2) no se debe exigir a los visitantes que visiten enlaces externos, solo que lo descubran ellos mismos. Dicho esto, se recomienda encarecidamente enlaces a documentación, fuentes o información adicional. Gracias por tu aporte.Utiliza strval () o (string) para convertir a string en PHP. Sin embargo, eso no convierte el booleano en la ortografía real de "verdadero" o "falso", por lo que debe hacerlo usted mismo. Aquí hay una función de ejemplo:
fuente
$val = true;
entoncesstrval($val)
y(string) $val
ambos regresan 1.Las otras soluciones aquí tienen advertencias (aunque abordan la pregunta en cuestión). Si (1) realiza un bucle sobre tipos mixtos o (2) desea una solución genérica que puede exportar como función o incluir en sus utilidades, ninguna de las otras soluciones aquí funcionará.
La solución más simple y más autoexplicativa es:
Pero la mayoría de los desarrolladores que leen su código requerirán un viaje a http://php.net/var_export para comprender qué
var_export
hace y cuál es el segundo parámetro.1)
var_export
Funciona como
boolean
entrada, pero convierte todo lo demás en astring
también.2)
($res) ? 'true' : 'false';
Funciona para la entrada booleana, pero convierte todo lo demás (ints, strings) en verdadero / falso.
3)
json_encode()
Los mismos problemas
var_export
y probablemente peor yajson_encode
que no se puede saber si la cadenatrue
era una cadena o un booleano.fuente
var_export()
parece ser el mejor para el caso de uso específico, gracias.var_export(boolval($var), true)
es una ruta segura para transformar el valor en las cadenas "verdadero" o "falso".if (is_bool($res) { $res = $res ? 'true' : 'false'; }
<< esto no funcionará - falta)
quizás sea mejor usar$result = (is_bool($var) && $var) ? 'true' : 'false';
$value = is_bool($value) ? var_export($value, true) : $value;
esta manera vivo el valor intacto y solo cambio el booleano a su representación de cadena.$res = $res
?? ¿Querías decir$res == $res
? O incluso$res === $res
:?¿Por qué no hacer así ?:
fuente
Para mí, quería una representación de cadena a menos que fuera
null
, en cuyo caso quería que permanecieranull
.El problema con var_export es que se convierte
null
en una cadena"NULL"
y también convierte una cadena vacía en"''"
, lo que no es deseable. No había una solución fácil que pudiera encontrar.Este fue el código que finalmente usé:
Corto y simple y fácil de incluir en una función también si lo prefiere.
fuente
boolval()
funciona para tablas complicadas donde declarar variables y agregar bucles y filtros no funcionan. Ejemplo:donde
$tmp
se usa una clave para transponer otros datos. Aquí, quería que la tabla mostrara "Sí" para 1 y nada para 0, así que se usa(boolval($row['special_case']) ? 'Yes' : '')
.fuente
boolval(some_expression) ? .. : ..
comporta de manera diferente quesome_expression ? .. : ..
?Esto también funciona para cualquier tipo de valor:
código:
fuente
Editado en base a la sugerencia de @ sebastian-norr que señala que la
$bool
variable puede o no ser verdadera0
o no1
. Por ejemplo, se2
resuelvetrue
cuando lo ejecuta a través de una prueba booleana en PHP.Como solución, he usado la conversión de tipos para asegurarnos de convertir
$bool
a0
o1
.Pero tengo que admitir que la expresión simple
$bool ? 'true' : 'false'
es mucho más limpia.Mi solución utilizada a continuación nunca debe usarse, jajaja.
Aquí es por qué no ...
Para evitar la repetición, la matriz que contiene la representación de cadena del booleano se puede almacenar en una constante que puede estar disponible en toda la aplicación.
fuente
No soy fanático de la respuesta aceptada, ya que convierte cualquier cosa que se evalúe en falsa en
"false"
no solo booleana y viceversa.De todos modos, aquí está mi respuesta OTT, utiliza la
var_export
función.var_export
funciona con todos los tipos de variablesresource
, excepto que he creado una función que realizará una conversión regular a string ((string)
), una conversión estricta (var_export
) y una verificación de tipo, dependiendo de los argumentos proporcionados.fuente
fuente
isset
No es necesario aquí. En php,if
-test es falso para ambosnull
yvariable not defined
. Simplemente puede hacer lo$converted_res = ( $res ? 'true' : 'false' );
que se ve en las respuestas anteriores.fuente
Solo quería actualizar, en PHP> = 5.50 puedes hacer
boolval()
lo mismoAquí referencia .
fuente
(bool) $var;
"<td>" . (boolval($row['special_case']) ? 'Yes' : ' ') . "</td>"
boolval()
va a la inversa, convirtiendo una variable de cualquier tipo en bool, no bool en string.