如题:
$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 1
想要直接输出变量可以用 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) |
18
windychen0 2020-08-09 12:58:02 +08:00
#8 和 #10 不是已经解决问题了吗
|