I am working with this JSON data:
{
"Data": {
"Expires" : 0
}
}
And I want to convert whatever is in the "Expires" key to a bool value.
Whether it is "true"
,"false"
, "no"
, "yes"
, 0
, 1
, true
, false
First I check if the value even exists.
//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 ) );
}
But when I check the variable
echo 'Expires: ' . $EXPIRES ? 'YES' : 'NO';
It always returns true
.
What am I doing wrong.