为了账号安全,请及时绑定邮箱和手机立即绑定

请问json_decode();解析出布尔值true是1,false为空,怎么解决?

请问json_decode();解析出布尔值true是1,false为空,怎么解决?

慕婉清6462132 2022-03-17 11:11:13
<?phpheader("Content-Type: text/html;charset=utf-8");$json = '{ "flag":false }';$j = json_decode($json,true);print_r($j);结果为---------------------------------Array ( [flag] => )-------------------------------我就想要布尔值 ture 或者false啊 ,给我吃了啊?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

布尔值true和false的实际值就是1和空,true和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,但这没法用于实际应用啊,只能用于程序调试。

查看完整回答
反对 回复 2022-03-22
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

这是函数作用的问题,print_r() 函数不会打印出 false 信息,要看 bool 值数据,应该使用 var_dump() 或者 var_export();
print_r 可以打印出 string、 integer 、 float、 array、 object 数据,但它不管 bool 值为假、或者 null 类型的数据;

查看完整回答
反对 回复 2022-03-22
?
阿晨1998

TA贡献2037条经验 获得超6个赞

PHP就这机制,false打印就是啥都不显示,你需要转换成字符串再输出就可以了

查看完整回答
反对 回复 2022-03-22
  • 3 回答
  • 0 关注
  • 311 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信