php json_decode();解析出布尔值true是1,false为空,怎么解决?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php json_decode();解析出布尔值true是1,false为空,怎么解决?相关的知识,希望对你有一定的参考价值。
<?php
header("Content-Type: text/html;charset=utf-8");
$json = ' "flag":false ';
$j = json_decode($json,true);
print_r($j);
结果为---------------------------------
Array ( [flag] => )
-------------------------------
我就想要布尔值 ture 或者false啊 ,给我吃了啊?
echo true; //显示为1
echo false; //显示为空
所以json中的true和false解析为1和空就是再正常不过的事,谁也没有吃它,因为这才是它们的真面目。
你可以在实际应用中直接把它们当作true和false来使用:
if ($j["flag"]) echo "flag的值是true";
如果你一定要显示为true和false才舒服,那可以在实际应用中转换一下即可:
echo $j["flag"]?"true":"false"; //注意,引号是必须的,否则结果仍然是1和空
当然,用 var_dump 和 var_export 可以打印出true和false,但这没法用于实际应用啊,只能用于程序调试。 参考技术A 这是函数作用的问题,print_r() 函数不会打印出 false 信息,要看 bool 值数据,应该使用 var_dump() 或者 var_export();
print_r 可以打印出 string、 integer 、 float、 array、 object 数据,但它不管 bool 值为假、或者 null 类型的数据; 参考技术B
这应该不是json_decode的问题,原生数组 用print_r打出来就是1和0,你可以试试,然后用全等去判断并不影响
参考技术C PHP就这机制,false打印就是啥都不显示,你需要转换成字符串再输出就可以了以上是关于php json_decode();解析出布尔值true是1,false为空,怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章