A-A+
thinkphp 去重数据distinct的使用方法
记得以前的时候使用过thinkphp的去重函数,可惜时间有点长了,忘记怎么用了,这不,最近要统计一个数据表里的人数,而且有重复数据,比如有一个用户member_id字段占了两条数据,但只要统计一条出来,其实这样的统计直接使用thinkphp中的distinct方法就可以了,很好使。
这里简单来放一个例子出来。
$test_data = M('User'); //实例化数据表
$data = $test_data->Distinct(true)->field('member_id')->order('id desc')->select(); //利用distinct方法去重
dump($data);
好了,这样就把User表里面 member_id 字段去重了,把读出来的数据统计一下总数就可以了,这里有一个小插曲,我就我把 select() 直接更改成为 count却不能成功,如下代码:
$test_data = M('User'); //实例化数据表
$data = $test_data->Distinct(true)->field('member_id')->order('id desc')->count(); //利用distinct方法去重
dump($data);
这样 Distinct 竟然起不到作用,不知道是我程序里面的问题,还是 thinkphp 不支持这种方法,没办法,只能使用 php 循环来解决总数的问题了,当我们把数据库中的数据 select 出来之后,接着往下:
$i=0;
foreach ($list as $value){
$i++;
}
最终 $i 就是我想要统计出来的总数了。