Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将JSON键/值解析为bool_Php_Json - Fatal编程技术网

Php 将JSON键/值解析为bool

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

我正在处理这个JSON数据:

{
    "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”。