服务器环境应该也没有动过,数据库数据类型没有修改。
之前一直是正常返回 int 类型,今天突然都自动变成 string 了,客户端因为没有做判断崩溃率骤增。
API 是对 WeCenter 的二次开发。
求助如何解决...
![]() | 1 SoloCompany 2015-04-28 14:35:31 +08:00 ![]() 为什么不是找你的同事问而是来这里问 |
![]() | 2 b821025551b 2015-04-28 14:37:16 +08:00 PHP里如果不强制声明一下类型的话自然会自动转换的,解决办法就是在输出时加个(int) |
![]() | 3 b821025551b 2015-04-28 14:38:16 +08:00 ![]() 不过话说回来,json数据不都是string么 |
![]() | 4 angelhorn 2015-04-28 15:12:57 +08:00 你数据库的版本一定不对 可能是重装编译了PHP或者是MYSQL重装 也可能是怎么样。。 首先MySQL的版本应该大于5.2 再有最最最重要的 PHP.INI 里面看看是否开启了mysqlnd这个是最坑的。。只要是php.ini里搜索不到mysqlnd 那基本可以88了 |
5 neilwong 2015-04-28 15:44:32 +08:00 php里做个断点就能看到是哪里出问题了吧。。。 |
![]() | 6 msg7086 2015-04-28 15:47:26 +08:00 @b821025551b 并不是。可以有数字类型。 |
![]() | 7 pantaovay 2015-04-28 22:54:39 +08:00 string json_encode ( mixed $value [, int $optiOns= 0 [, int $depth = 512 ]] ) 有一个option是JSON_NUMERIC_CHECK Encodes numeric strings as numbers. Available since PHP 5.3.3. |
![]() | 8 free9fw 2015-04-29 09:05:52 +08:00 function str2int($data, $transformColumn = []) { $rs = []; array_walk($data, function($item, $key) use(&$rs, $transformColumn){ array_walk($item, function($iv, $ik) use(&$rs, $key, $transformColumn){ $rs[$key][$ik] = !in_array($ik, $transformColumn) ? $iv : $iv + 0; }); }); return $rs; } |
![]() | 9 DEATHKEL 2017-02-14 14:37:11 +08:00 请问这个问题解决了吗,我最近也遇到这个问题了 |