各位大侠,小白求教! 我有一个数据表里的一个字段u_id,里面的值分别有多个11 和 7 在thinkphp中怎么把相同数值归为一组比如11的一组,7一组输出? 排序是id自增的。 谢谢了!
1条回答 默认 最新
- Jason Ho 2021-07-02 15:05关注
提供一种思路,你可以先把11和7 的数据全部查出
例如:$data = db('export_record')->whereIn('u_id',['7','11'])->select(); $uid = ''; foreach ($data as $dat) { if ($uid != $dat['u_id']) { $uid = $dat['u_id']; } $new_datas[$uid][] = $dat; } $new_datas = array_values($new_datas);
我想你要的是$new_datas 这样的格式对吗
如果你还要在分组后再做个组内排序,
可以继续处理new_datas 的格式:foreach ($new_datas as &$array) { $array = arraySort($array, 'id', $sort = SORT_DESC); }
这里的arraySort 函数为:
/** * 二维数组根据某个字段排序 * @param array $array 要排序的数组 * @param string $keys 要排序的键字段 * @param string $sort 排序类型 SORT_ASC SORT_DESC * @return array 排序后的数组 */ function arraySort($array, $keys, $sort = SORT_DESC) { $keysValue = []; foreach ($array as $k => $v) { $keysValue[$k] = $v[$keys]; } array_multisort($keysValue, $sort, $array); return $array; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用