在php问题中转换数组中的json

时间:2013-10-25 09:08:16

标签: php json

我有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
    )

)

如何以布尔形式保存true和false?

3 个答案:

答案 0 :(得分:8)

它已经是布尔形式。尝试使用var_dump($array[0]['visibility']);,然后输出bool(true)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
        )
    */
?>

DEMO

修改

这里的功能是为您提供与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)
        }
    */
?>

答案 1 :(得分:4)

It looks fine to me

您是否正在使用print_r或类似内容进行打印? (专业提示:不要)。

答案 2 :(得分:1)

TRUE始终是大于0的值,FALSE是0,因此您只需检查

if ($visibility) {
   // do something
}