用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2911|回复: 13
收起左侧

[版本 3.x] 数据库存的是int型,返回string型

[复制链接]
发表于 2016-8-10 10:20:26 | 显示全部楼层 |阅读模式
如我在m层读取数据test表数据
$query = $this->db->get('test');
return $query->result_array();


在c层打印这个数组id为int型,php也会自动转为string,
请问该如何解决
 楼主| 发表于 2016-8-20 17:06:11 | 显示全部楼层
Hex 发表于 2016-8-19 14:09
这个函数第二个参数,可以控制,你可以看看 PHP 手册。

老大,这样还是不行啊,假如可以加上JSON_NUMERIC_CHECK转成int型的话,还有布尔型,浮点型,治标不治本啊,现在我能想到的方法是在helpers写个方法把从数据库读出来的数组传进去,判断哪些字段需要转换类型,拆开转换类型后在组装上传回来,然后再json_encode,可是这样就很浪费效率啊
发表于 2016-8-12 09:37:08 | 显示全部楼层
还是直接上代码吧
PHP复制代码
$result = $query->result_array();
 
 
$list = array();
foreach($result as $value) {
$list[] = array(
'id' => intval($value['id']),
...
);
}
 
return $list;
 
复制代码

发表于 2016-8-21 13:36:09 | 显示全部楼层
a513515125 发表于 2016-8-20 17:06
老大,这样还是不行啊,假如可以加上JSON_NUMERIC_CHECK转成int型的话,还有布尔型,浮点型,治标不治本啊 ...

你要是精确控制只能这样,其实不用太担心效率。。。瓶颈一般是在你从数据库取数据,而不是在转换上。
还有,你可以看看为什么数据库取出来的类型不对,找找根本原因。
发表于 2016-8-10 11:21:55 | 显示全部楼层
什么意思?你想做什么?PHP 是弱类型语言。。。
发表于 2016-8-10 13:23:30 | 显示全部楼层
你是要输出的时候强制转为int么?
 楼主| 发表于 2016-8-10 16:29:51 | 显示全部楼层
liugoe 发表于 2016-8-10 13:23
你是要输出的时候强制转为int么?

是的
 楼主| 发表于 2016-8-10 16:30:58 | 显示全部楼层
Hex 发表于 2016-8-10 11:21
什么意思?你想做什么?PHP 是弱类型语言。。。

想输出的时候强制转为int,只能把数组循环拆开一个个转了,做接口,安卓那边需要转换数据类型
 楼主| 发表于 2016-8-10 17:21:42 | 显示全部楼层
Hex 发表于 2016-8-10 11:21
什么意思?你想做什么?PHP 是弱类型语言。。。

就是数据库里存的数据是int的型拿出来就是int型,varchar就是string,但是php读出来的数据都会强制转换为string
发表于 2016-8-11 13:34:06 | 显示全部楼层
a513515125 发表于 2016-8-10 17:21
就是数据库里存的数据是int的型拿出来就是int型,varchar就是string,但是php读出来的数据都会强制转换为s ...

你要输转 json 的话  json_encode() 可以帮你把数字字符串转成 int
 楼主| 发表于 2016-8-18 18:28:42 | 显示全部楼层
Hex 发表于 2016-8-11 13:34
你要输转 json 的话  json_encode() 可以帮你把数字字符串转成 int

json_encode()怎么转
发表于 2016-8-19 11:30:22 | 显示全部楼层
json_encode($abc)

本版积分规则