关于PHP 中 json_encode的奇葩问题

例如:有一个从数据库查询出来的数组,正常情况下用 echo josn_encode($a); 后 输出的json字符串应该是

[{"id":"1","name":"aaa","age":"23"},{"id":"2","name":"aaa","age":"23"}]

上面这样,本来数据库中字段为整型的输出后也会加上双引号,但是最近换到另一个服务器上时输出的是这样的

[{"id":1,"name":"aaa","age":23},{"id":1,"name":"aaa","age":23}]

整型的值 如 1,23 没有了双引号,很奇怪,不知道到底怎么回事,有大神知道么

阅读 3.1k
3 个回答

请在josn_encode($a);之前var_dump($a);一下

首先确定数据库里输出的是加上了引号的吗?
我的感觉是id一般是整数,数据库输出的也会是整数,所以json之后也是整数
所以我觉得问题不是json的原因,php底层的zval在定义的时候就给你定义好一个类型了,json才不会闲的没事给你改类型呢,那多费事,所以看看是不是数据库输出的就是整数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题