2013-10-25 101 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 
}