Php 将JSON键/值解析为bool
我正在处理这个JSON数据:Php 将JSON键/值解析为bool,php,json,Php,Json,我正在处理这个JSON数据: { "Data": { "Expires" : 0 } } 我想把“Expires”键中的内容转换成bool值 是否为“true”,“false”,“no”,“yes”,0,1,true,false 首先,我检查该值是否存在 //DEFAULT $EXPIRES = false; if(array_key_exists('Expires', $DATA)) { if (isse
{
"Data": {
"Expires" : 0
}
}
我想把“Expires”键中的内容转换成bool值
是否为“true”
,“false”
,“no”
,“yes”
,0
,1
,true
,false
首先,我检查该值是否存在
//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 ) );
}
但是当我检查变量时
echo 'Expires: ' . $EXPIRES ? 'YES' : 'NO';
它总是返回true
我做错了什么
问题在于这里的“Expires:”$过期了?”是:'否'
您正在连接这两个'Expires:'$过期
因此它将始终返回YES
将此更改为:
echo 'Expires: '. $EXPIRES ? 'YES' : 'NO';
这个:
if($EXPIRES===true)
{
echo 'Expires: '.$EXPIRES;
}
问题在于这里的“Expires:”$过期了?”是:'否'
您正在连接这两个'Expires:'$过期
因此它将始终返回YES
将此更改为:
echo 'Expires: '. $EXPIRES ? 'YES' : 'NO';
这个:
if($EXPIRES===true)
{
echo 'Expires: '.$EXPIRES;
}
如果是这些值中的任何一个,则将其设置为“是”。因此,即使它是“false”、“0”或“no”,您仍然将其设置为“YES”。如果它是这些值中的任何一个,您将其设置为“YES”。因此,即使它是“false”、“0”或“no”,您仍然将其设置为“YES”。