¿Cómo puedo convertir una cadena boolean
?
$string = 'false';
$test_mode_mail = settype($string, 'boolean');
var_dump($test_mode_mail);
if($test_mode_mail) echo 'test mode is on.';
vuelve,
verdadero booleano
Pero debería ser boolean false
.
!!$string1
devolvería un booleano indicativo de la cadena descrita en la respuesta mejor calificada.Respuestas:
Las cadenas siempre se evalúan como verdaderas booleanas a menos que tengan un valor que PHP considere "vacío" (tomado de la documentación de
empty
):""
(una cadena vacía);"0"
(0 como una cadena)Si necesita establecer un valor booleano basado en el valor de texto de una cadena, deberá verificar la presencia o no de ese valor.
EDITAR: el código anterior está destinado a la claridad de la comprensión. En uso real, el siguiente código puede ser más apropiado:
o tal vez el uso de la
filter_var
función puede cubrir más valores booleanos:filter_var
abarca toda una serie de valores, incluyendo los valores Truthy"true"
,"1"
,"yes"
y"on"
. Ver aquí para más detalles.fuente
$string === 'true'
filter_var($string, FILTER_VALIDATE_BOOLEAN);
es algo bueno?Este método fue publicado por @lauthiamkok en los comentarios. Lo publico aquí como respuesta para llamar más la atención.
Dependiendo de sus necesidades, debe considerar usar
filter_var()
con laFILTER_VALIDATE_BOOLEAN
bandera.fuente
filter_var($answer, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
funcionó aún mejor para mí. Ver php.net/manual/en/function.filter-var.php#121263La cadena
"false"
es considerada realmente un"TRUE"
valor por PHP. La documentación dice:entonces si lo haces:
o
En ambos casos
$bool
seráTRUE
. Por lo tanto, debe hacerlo manualmente, como sugiere GordonM.fuente
Al trabajar con JSON, tuve que enviar un valor booleano a través de
$_POST
. Tuve un problema similar cuando hice algo como:En el código anterior, mi booleano se convirtió en una cadena JSON.
Para superar esto, puede decodificar la cadena usando
json_decode()
:(Esto normalmente debería funcionar con valores booleanos convertidos en cadena y enviados al servidor también por otros medios, es decir, que no sean JSON).
fuente
puedes usar json_decode para decodificar ese booleano
fuente
Maneja todas las variantes posibles de
$string
fuente
on
yoff
?Si su variable "booleana" proviene de una matriz global como $ _POST y $ _GET, puede usar la
filter_input()
función de filtro.Ejemplo para POST:
Si su variable "booleana" proviene de otra fuente, puede usar la
filter_var()
función de filtro.Ejemplo:
fuente
Puedes usar
boolval($strValue)
Ejemplos:
Documentación http://php.net/manual/es/function.boolval.php
fuente
echo boolval('false');
=> 1echo (int)'false;
oecho intval('false');
(int)'true'
yintval('true')
ambos devuelven 0 también (todas las cadenas lo hacen)Lo más fácil de hacer es esto:
Al hacerlo de esta manera, puede recorrer una serie de 'verdadero', 'VERDADERO', 'falso' o 'FALSO' y obtener el valor de la cadena a un valor booleano.
fuente
Otras respuestas están por complicar las cosas. Esta pregunta es simplemente una pregunta lógica . Solo haz tu declaración correcta.
Ahora tu respuesta será
false
, si la cadena era'false'
,true
, si tu cadena era'true'
.Tengo que tener en cuenta que
filter_var( $boolString, FILTER_VALIDATE_BOOLEAN );
aún será una mejor opción si necesita tener cadenason/yes/1
como alias paratrue
.fuente
o
fuente
Debes especificar
de lo contrario, siempre obtendrá falso incluso si $ string contiene algo más.fuente
¡También puedes usar el método settype!
SetType ($ var, "Boolean") Echo $ var // ver 0 o 1
fuente
Lo hago de una manera que arrojará cualquier versión que no distinga entre mayúsculas y minúsculas de la cadena "false" al booleano FALSO, pero se comportará utilizando las reglas normales de conversión de php para todas las demás cadenas. Creo que esta es la mejor manera de prevenir comportamientos inesperados.
O como una función:
fuente
La respuesta de @GordonM es buena. Pero fallaría si
$string
ya estrue
(es decir, la cadena no es una cadena sino booleana VERDADERA) ... lo que parece ilógico.Extendiendo su respuesta, usaría:
fuente
Me estaba confundiendo con los atributos de código abreviado de WordPress, decidí escribir una función personalizada para manejar todas las posibilidades. tal vez sea útil para alguien:
fuente
Una manera simple es verificar una serie de valores que considere verdaderos.
fuente
Editado para mostrar una posibilidad no mencionada aquí, porque mi respuesta original estaba lejos de estar relacionada con la pregunta del OP.
preg_match (); Es posible de usar. Sin embargo, en la mayoría de las aplicaciones será mucho más pesado de usar que otras respuestas aquí.
/(?:true)|(?:1)/i
También se puede usar si es necesario en ciertas situaciones. No volverá correctamente cuando evalúa una cadena que contiene "falso" y "1".fuente
En PHP, simplemente puede convertir un valor a booleano utilizando double not operator (
!!
):fuente
Debería poder convertir a un booleano usando (bool) pero no estoy seguro sin verificar si esto funciona en las cadenas "verdadero" y "falso".
Sin embargo, esto podría valer un poco
Vale la pena saber que lo siguiente evaluará el valor booleano False cuando se coloque dentro
Todo lo demás se evaluará como verdadero.
Como se describe aquí: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
fuente
"false"
entrue
.$myBool = (bool)"False"; if ($myBool) { echo "true"; }