我有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
)
)
如何以布尔形式保存真假?
它已经是布尔形式。尝试使用 var_dump($array[0]['visibility']);
,它将输出bool(true)
或bool(false)
。
print_r
在输出时自动将布尔值转换为 1
表示真,(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)
}
*/
?>
对我来说看起来不错。
您是否使用print_r
或类似的东西来打印它?(专业提示:不要)。
TRUE 始终是大于 0 的值,FALSE 是 0,所以你只需要检查
if ($visibility) {
// do something
}