如题:
$a = true; echo $a; //输出 1;
//但是想输出 true,咋办? echo json_encode($a); //输出 true;
json_encode()会对参数进行 json 编码, 那 php 为什么要默认帮忙转一下,明明没有明确的指令
![]() | 1 shiny 2020-08-08 04:12:00 +08:00 翻下手册,echo 只接受 string 类型参数,也就意味着 $a 会隐式转化为 string,和 echo strval($a); 结果一致。 |
![]() | 2 shiny 2020-08-08 04:13:46 +08:00 ![]() 想要直接输出变量可以用 var_export |
![]() | 3 zsdroid 2020-08-08 08:14:15 +08:00 true,false 本身就是非可视化的,要么显示成字符串格式,要么显示成数字格式 |
![]() | 4 zsdroid 2020-08-08 08:22:13 +08:00 php 奇葩的地方是 true 显示成数字格式,false 显示成字符串格式 |
5 qsbaq 2020-08-08 08:25:27 +08:00 echo $a ? 1:0; |
![]() | 7 sagaxu 2020-08-08 09:15:59 +08:00 via Android this is php |
![]() | 8 DavidNineRoc 2020-08-08 11:13:45 +08:00 日常黑 PHP, 楼主不就是想要这样的? function echoBool(bool $v) { echo $v ? 'true' : 'false'; } 我已经向 PHP9 提出草案, 预计 PHP10 将合并, 你就可以使用这个 Feture |
![]() | 9 xiangyuecn 2020-08-08 12:00:59 +08:00 echo false 好像是输出?没有任何输出吧。比较变态 |
![]() | 10 sadfQED2 2020-08-08 12:15:05 +08:00 via Android var_dump 输出 bool 啊 |
![]() | 11 areless 2020-08-08 12:32:46 +08:00 via Android 并不是每一个语言为输出 json 而服务的。任何早期的动态语言都这样。想用就别计较。何况自从 node 以后,php 跟 js 是天敌。谁鸟你这种想 json 就有 json,自以为是的写法啊。你可以引入 cjson 取代内置函数,php 现在也是支持 ffi 的。 |
![]() | 13 xxbutoo OP |
![]() | 14 xxbutoo OP |
15 qsbaq 2020-08-09 08:07:04 +08:00 php 可以用 var_dump 输出具体的类型,但是其中也带了 boolean . 实际项目中都是用 01 来表示 true 和 false 如果要强制 true,那就只能作为字符串输出'true','false' |
![]() | 16 sadfQED2 2020-08-09 09:20:00 +08:00 via Android @xxbutoo php 里面,.表示字符串连接,就像 1 楼说的,会做隐式转换。你要把 bool 输出为 true false 只能自己判断类型然后拼接字符串 return $b="age=".(is_bool($a)?($a?"true":"false"):$a) |
![]() | 17 realpg PRO |
18 windychen0 2020-08-09 12:58:02 +08:00 #8 和 #10 不是已经解决问题了吗 |