2013-10-25 63 views
0

我有JSON:转换JSON在PHP问题

[{"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 
    ) 

) 

如何保存真假布尔形式?

回答

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) 
     } 
    */ 
?> 
+0

是的,你是对的。以前不知道print_r这个事实。谢谢。 –

1

TRUE始终是一个值大于0和FALSE为0,所以你只需要检查

if ($visibility) { 
    // do something 
}