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