0

我有 JSON:

[{"name":"point","visibility":false},{"name":"php_first_table","visibility":true}]

我愿意:

$Arr = json_decode($json,true);

我得到:

Array
 (
  [0] => Array
    (
        [name] => point
        [visibility] => 
    )

  [1] => Array
    (
        [name] => php_first_table
        [visibility] => 1
    )

)

如何以布尔形式保存真假?

4

3 回答 3

8

它已经是布尔形式。尝试使用var_dump($array[0]['visibility']);它会输出bool(true)or bool(false)

print_r输出时自动将布尔值转换1为 true 和(empty)false,但不会更改数据类型。

您可以var_dump在阵列上使用以获得更好的输出:

<?php
    $array = array(
        'booleanTrue' => true,
        'booleanFalse' => false,
        'integer' => 1
    );
    var_dump($array);
    print_r($array);

    /*
        array(3) {
          ["booleanTrue"]=>
          bool(true)
          ["booleanFalse"]=>
          bool(false)
          ["integer"]=>
          int(1)
        }
        Array
        (
            [booleanTrue] => 1
            [booleanFalse] => 
            [integer] => 1
        )
    */
?>

演示

编辑

这是一个功能,可以为您提供更好/更紧凑的var_dump输出,非常类似于print_r

<?php
    function var_dump_r($variable, $return = false) {
        ob_start();
        var_dump($variable);
        $output = preg_replace('/\["([^"]+)"\]/', '[$1]', preg_replace('/\s*=>\s*/', ' => ', ob_get_clean()));

        if (!$return) {
            echo $output;
        }
        return $return;
    }

    var_dump_r(array(
        'booleanTrue' => true,
        'booleanFalse' => false,
        'integer' => 1
    ));

    /*
        array(3) {
          [booleanTrue] => bool(true)
          [booleanFalse] => bool(false)
          [integer] => int(1)
        }
    */
?>
于 2013-10-25T09:09:51.327 回答
4

我觉得很好

您是否正在使用print_r或类似的东西来打印它?(专业提示:不要)。

于 2013-10-25T09:10:04.850 回答
1

TRUE 总是大于 0 的值,FALSE 是 0,所以你只需要检查

if ($visibility) {
   // do something
}
于 2013-10-25T09:10:54.143 回答