PHP按typeId分组:如何用getById()实现元素相似值分组
按typeId分组元素的实现方法
先修正你代码里的两处问题:
- 循环变量名混淆:
foreach ($announcement as $announcements)应改为foreach ($announcements as $item)(假设$announcements是你获取到的所有元素集合) getById调用参数错误:要使用当前元素的typeId,而非$this->typeId()
下面是实现按相同typeId分组的完整逻辑:
// 初始化分组数组 $group = []; // 遍历所有元素 foreach ($announcements as $item) { // 获取当前元素的typeId $typeId = $item->typeId(); // 若需要获取对应类型的详细信息,可调用DAO方法 // $announcementType = $this->yourDaoInstance->getById($typeId); // 检查当前typeId的分组是否存在,不存在则初始化空数组 if (!isset($group[$typeId])) { $group[$typeId] = []; } // 将当前元素添加到对应分组中 $group[$typeId][] = $item; }
逻辑说明
- 以
typeId作为分组数组的键,天然实现相同typeId元素的归类 - 每次遍历先校验分组是否存在,避免直接赋值空数组报错
- 最终
$group的结构为:键是typeId,值为对应所有元素组成的数组
内容的提问来源于stack exchange,提问作者Lara M.
相关产品推荐
相关产品推荐

