比如要统计一个月内商城用户的复购情况。分别获取购买一次 复购两次及以上的数据,可以如下
function filterby($array, $value, $column = 'id')
{
return array_values(array_filter($array, function ($v) use ($column, $value) {
return $v[$column] == $value;
}));
}
function countby($array, $value, $column = 'id')
{
return count(filterby($array, $value, $column));
}
$result = fetch_all("SELECT count(*) as num FROM tp_orders WHERE status in (10,20,25,30,40) {$sql} Group by user_id having num>0");
$num_2 = countby($result,1,'num');
$num_2 = countby($result,2,'num');
$num_3 = countby($result,3,'num');
从降低数据库压力的角度看应该只查询一次。将查询得到的结果返回PHP处理。
一开始是从数据库那边对SQL做排序
order by num asc
然后用代码对二维数组做循环统计 这样可以处理 但是不利于解耦和复用 于是有了上面两个函数
核心是对二维数组中某个字段的值做判断,筛选出匹配后的二维数组 计算个数。