php - ejemplo - Cómo convertir booleano a cadena
convert string to boolean javascript (14)
¿Por qué no haces esto ?:
if ($res) {
$converted_res = "true";
}
else {
$converted_res = "false";
}
Tengo una variable booleana que quiero convertir a una cadena
$res = true;
Necesito que el valor convertido también esté en el formato "true" "false"
no "0" "1"
$converted_res = "true";
$converted_res = "false";
He intentado:
$converted_res = string($res);
$converted_res = String($res);
pero me dice que string
y String
no son funciones reconocidas. ¿Cómo convierto este booleano a una cadena en el formato "verdadero" o "falso" en php?
Esto también funciona para cualquier tipo de valor:
$a = true;
echo $a // outputs: 1
echo value_To_String( $a ) // outputs: true
código:
function valueToString( $value ){
return ( !is_bool( $value ) ? $value : ($value ? ''true'' : ''false'' ) );
}
La función var_export devuelve una representación de cadena de una variable, por lo que podría hacer esto:
var_export($res, true);
El segundo argumento le dice a la función que devuelva la cadena en lugar de repetirla.
Las otras soluciones aquí tienen salvedades (aunque 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 más autoexplicativa 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 que leen tu código necesitarán un viaje a http://php.net/var_export para entender qué hace var_export
y cuál es el segundo param.
1. var_export
Funciona para la entrada boolean
pero también convierte todo lo demás en una 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'';
($res) ? ''true'' : ''false'';
Funciona para entrada booleana pero convierte todo lo demás (enteros, cadenas) en 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()
Los mismos problemas que var_export
y probablemente sean peores ya que json_encode
no puede saber si la cadena true
tenía la intención de ser una cadena o un booleano.
No soy partidario de la respuesta aceptada, ya que convierte todo lo que se evalúa como falso en "false"
no solo booleano y vis-versa.
De todos modos, aquí está mi respuesta OTT, utiliza la función var_export
.
var_export
funciona con todos los tipos de variables, excepto resource
, he creado una función que realizará un cast normal a string ( (string)
), un cast estricto ( var_export
) y una verificación de tipo, dependiendo de los argumentos proporcionados.
if(!function_exists(''to_string'')){
function to_string($var, $strict = false, $expectedtype = null){
if(!func_num_args()){
return trigger_error(__FUNCTION__ . ''() expects at least 1 parameter, 0 given'', E_USER_WARNING);
}
if($expectedtype !== null && gettype($var) !== $expectedtype){
return trigger_error(__FUNCTION__ . ''() expects parameter 1 to be '' . $expectedtype .'', '' . gettype($var) . '' given'', E_USER_WARNING);
}
if(is_string($var)){
return $var;
}
if($strict && !is_resource($var)){
return var_export($var, true);
}
return (string) $var;
}
}
if(!function_exists(''bool_to_string'')){
function bool_to_string($var){
return func_num_args() ? to_string($var, true, ''boolean'') : to_string();
}
}
if(!function_exists(''object_to_string'')){
function object_to_string($var){
return func_num_args() ? to_string($var, true, ''object'') : to_string();
}
}
if(!function_exists(''array_to_string'')){
function array_to_string($var){
return func_num_args() ? to_string($var, true, ''array'') : to_string();
}
}
Otra forma de hacerlo: json_encode( booleanValue )
echo json_encode(true); // string "true"
echo json_encode(false); // string "false"
// null !== false
echo json_encode(null); // string "null"
Solo quería actualizar, en PHP> = 5.50 puedes hacer boolval()
para hacer lo mismo
UTILIZAR filter_var()
filter_var(''true'', FILTER_VALIDATE_BOOLEAN); // true
filter_var(1, FILTER_VALIDATE_BOOLEAN); // true
filter_var(''1'', FILTER_VALIDATE_BOOLEAN); // true
filter_var(''on'', FILTER_VALIDATE_BOOLEAN); // true
filter_var(''yes'', FILTER_VALIDATE_BOOLEAN); // true
filter_var(''false'', FILTER_VALIDATE_BOOLEAN); // false
filter_var(0, FILTER_VALIDATE_BOOLEAN); // false
filter_var(''0'', FILTER_VALIDATE_BOOLEAN); // false
filter_var(''off'', FILTER_VALIDATE_BOOLEAN); // false
filter_var(''no'', FILTER_VALIDATE_BOOLEAN); // false
filter_var(''ANYthingELSE'', FILTER_VALIDATE_BOOLEAN); // false
filter_var('''', FILTER_VALIDATE_BOOLEAN); // false
filter_var(null, FILTER_VALIDATE_BOOLEAN); // false
Utiliza strval () o (cadena) para convertir a cadena en PHP. Sin embargo, eso no convierte booleano en la ortografía real de "verdadero" o "falso", por lo que debe hacerlo usted mismo. Aquí hay una función de ejemplo:
function strbool($value)
{
return $value ? ''true'' : ''false'';
}
echo strbool(false); // "false"
echo strbool(true); // "true"
Ver var_export
boolval()
funciona para tablas complicadas donde las variables de declaración y la adición de bucles y filtros no funcionan. Ejemplo:
$result[$row[''name''] . "</td><td>" . (boolval($row[''special_case'']) ? ''True'' : ''False'') . "</td><td>" . $row[''more_fields''] = $tmp
donde $tmp
es una clave utilizada para transponer otros datos. Aquí, quería que la tabla muestre "Sí" para 1 y nada para 0, así que se usa (boolval($row[''special_case'']) ? ''Yes'' : '''')
.
$converted_res = ($res) ? ''true'' : ''false'';
$converted_res = isset ( $res ) ? ( $res ? ''true'' : ''false'' ) : ''false'';
function ToStr($Val=null,$T=0){
return is_string($Val)?"$Val"
:
(
is_numeric($Val)?($T?"$Val":$Val)
:
(
is_null($Val)?"NULL"
:
(
is_bool($Val)?($Val?"TRUE":"FALSE")
:
(
is_array($Val)?@StrArr($Val,$T)
:
false
)
)
)
);
}
function StrArr($Arr,$T=0)
{
$Str="";
$i=-1;
if(is_array($Arr))
foreach($Arr AS $K => $V)
$Str.=((++$i)?", ":null).(is_string($K)?"/"$K/"":$K)." => ".(is_string($V)?"/"$V/"":@ToStr($V,$T+1));
return "array( ".($i?@ToStr($Arr):$Str)." )".($T?null:";");
}
$A = array(1,2,array(''a''=>''b''),array(''a'',''b'',''c''),true,false,ToStr(100));
echo StrArr($A); // OR ToStr($A) // OR ToStr(true) // OR StrArr(true)