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