16

我正在使用 PHP 的 PDO 来查询 MySQL 数据库。它以字符串形式返回数字和整数,并且弄乱了我的 JSON。

除了逐行类型转换值之外,还有更好的方法来修复它吗?

array(2) { 
  ["name"]=> string(11) "Preliminary" 
  ["sell_price"]=> string(6) "864.00"
} 
4

2 回答 2

10

如果您使用的是 php 5.3.3 或更高版本,则可以使用JSON_NUMERIC_CHECK第二个参数来json_encode执行此操作。

见:http ://us3.php.net/manual/en/function.json-encode.php

于 2012-08-22T16:50:16.713 回答
3

尽管@Explosion Pills 在这种情况下可以满足@user1032531 的需求,但它并没有解决问题的第一个来源。

正如您在原始问题中看到的那样,在 PHP 端,值 fromsell_price已经是 a string,尽管正如用户所说,它在数据库中存储为“数字”(我们不知道它是 aDECIMAL还是 a FLOAT)。

好吧,正如用户@jameshfisher 在他的评论中指出的那样,当将 PDO 与 MySQL 一起使用时,可能需要适当的配置才能将“数字”作为“数字”。您可以点击他的链接以获得使其正常工作所需的几乎所有内容。

Appart 从那开始,接受的答案是有效的,因为如果不使用,JSON_NUMERIC_CHECK json_encode无论变量的类型如何,都会将所有内容作为文本发送,并且在使用它时,它会将值转换为基于猜测而不是原始类型的类型变种。

于 2014-11-04T13:00:51.447 回答