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啊 ,给我吃了啊?

布尔值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,但这没法用于实际应用啊,只能用于程序调试。
参考技术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为空,怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将字符串解析为布尔值

PHP json_decode 用法

php使用json_decode解析json返回NULL

当json_decode、stripslashes等解决方案都不起作用时,如何在php中解析json?

php json_decode 返回空

如何在 PHP 中解析一串布尔逻辑