Estoy trabajando con estos datos JSON:
{ "Data": { "Expires" : 0 } }Y quiero convertir lo que sea que esté en la clave "Expires" a un valor bool.
Si es "true" , "false" , "no" , "yes" , 0 , 1 , true , false
Primero verifico si el valor existe.
//DEFAULT $EXPIRES = false; if(array_key_exists('Expires', $DATA)) { if (isset( $DATA[ 'Expires' ] )) { $EXPIRES = strtolower( clean_input( $DATA[ 'Expires' ] ) ); if (checkIfBoolean( $EXPIRES )) { //OK IT IS A BOOLEAN VALUE SET IT $EXPIRES = filter_var( $EXPIRES, FILTER_VALIDATE_BOOLEAN); } else { return array( "Code" => 0, "Error" => "Expires is not a boolean [0, 1]." ); } } } //CAN'T TRUST THE USER, CLEAN THEIR INPUT function clean_input ( $data ) { $data = trim( $data ); $data = stripslashes( $data ); $data = htmlspecialchars( $data ); return $data; } //CHECK IF BOOLEAN function checkIfBoolean ( $string ) { $string = strtolower( $string ); return ( in_array( $string, array( "true", "false", "1", "0", "yes", "no"), true ) ); }Pero cuando compruebo la variable
echo 'Expires: ' . $EXPIRES ? 'YES' : 'NO'; Siempre devuelve true .
Qué estoy haciendo mal.
El problema es aquí
'Expires: '. $EXPIRES ? 'YES' : 'NO';estás concatenando estos dos'Expires: '. $EXPIRESpor lo que siempre devolveráYES
Cambia esto a:
echo 'Expires: '. $EXPIRES ? 'YES' : 'NO';Este:
if($EXPIRES===true) { echo 'Expires: '.$EXPIRES; }