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

慕婉清6462132
浏览 326回答 3
3回答

白衣非少年

布尔值true和false的实际值就是1和空,true和false只不过是它们的名字(相当于常量)而已,不信你试试下面两行代码:echo true; //显示为1echo 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,但这没法用于实际应用啊,只能用于程序调试。

小怪兽爱吃肉

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

阿晨1998

PHP就这机制,false打印就是啥都不显示,你需要转换成字符串再输出就可以了
打开App,查看更多内容
随时随地看视频慕课网APP