PHP如何使用内置数组函数将对象数组按方法返回值分组
PHP按对象属性分组的简洁实现
PHP原生没有专门的数组分组内置函数,使用内置函数array_reduce即可实现需求,完全避免冗余foreach循环和额外变量覆写操作,实现代码如下:
$grouped = array_reduce($objs, function ($result, $currentObj) { $userId = $currentObj->getUserId(); $result[$userId][] = $currentObj; return $result; }, []);
实现逻辑说明
- 第三个参数传入空数组作为分组结果的初始容器
- 每次迭代时取出当前对象的用户ID作为分组键,将对象追加到对应键的数组子集内
- 迭代完成后直接返回的
$grouped就是你需要的分组结构
另外你之前写的array_map代码存在语法错误,return = $obj->getUserId();多了多余的等号,修正后应为return $obj->getUserId();。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

