You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP(NETTE)按对象值对对象数组进行分组的实现方法

在Nette框架中按日期分组数据库对象数组

嘿,我来帮你搞定这个按日期分组的需求!其实思路很简单:先把从数据库拿到的对象数组按datum字段归类,再把分组后的内容输出成你想要的格式就行。

第一步:在Presenter中处理分组逻辑

假设你已经从数据库获取到了目标数组$items(就是你给出的那组对象数据),可以在Presenter里做分组处理:

public function renderDefault()
{
    // 这里替换成你从数据库获取数据的代码,比如用Repository
    $items = $this->cestyRepository->findAll();

    // 初始化分组数组
    $groupedByDate = [];

    // 遍历原始数据,按日期归类
    foreach ($items as $item) {
        $date = $item->datum;
        // 如果当前日期的分组还没创建,先初始化空数组
        if (!isset($groupedByDate[$date])) {
            $groupedByDate[$date] = [];
        }
        // 将当前条目CestyNazev加入对应日期的分组
        $groupedByDate[$date][] = $item->CestyNazev;
    }

    // 可选:对日期排序,比如按从新到旧排列
    krsort($groupedByDate);

    // 把分组后的数据传给模板
    $this->template->groupedByDate = $groupedByDate;
}

第二步:在Latte模板中输出格式

接下来在对应的Latte模板里,把分组后的数据渲染成你想要的样式:

{foreach $groupedByDate as $date => $codes}
    *{$date}* {implode(' ', $codes)}<br>
{/foreach}

这样输出的结果就完全符合你的预期:
2018-03-27 K00301 K00302
2018-03-26 KLA101
2018-03-29 KLA102

如果你需要更复杂的HTML样式,比如用列表或者自定义容器,只需要修改模板里的输出结构就行啦。

内容的提问来源于stack exchange,提问作者Frederik Fako

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:26:29