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

如何在Twig模板引擎中对重复年份数据去重并合并?

在Twig模板中合并重复年份的列表

完全可以实现,分两种场景处理:

场景1:后端已提供结构化数据

如果你的后端(比如PHP)已经把数据整理成包含年份和姓名的数组,直接传给Twig后,用group过滤器按年份分组,再拼接姓名即可:

假设后端传入的变量people结构如下:

$people = [
    ['year' => 1985, 'name' => 'John'],
    ['year' => 1974, 'name' => 'Lena'],
    ['year' => 1985, 'name' => 'Sandra'],
    ['year' => 1974, 'name' => 'Tom'],
    ['year' => 1985, 'name' => 'Jess'],
];

Twig模板代码:

{% for year, group in people|group('year') %}
    {{ year }} - {{ group|map(item => item.name)|join(', ') }}
{% endfor %}

场景2:原数据是纯文本格式

如果你的数据是像示例里的纯文本字符串,可以在Twig里先拆分文本,再手动分组:

假设纯文本存在变量rawList中,模板代码如下:

{# 按换行拆分每一行 #}
{% set items = rawList|split('\n') %}
{% set groupedData = {} %}

{# 遍历每一行,拆分年份和姓名,存入分组数组 #}
{% for item in items %}
    {% if item|trim %}
        {% set parts = item|split(' - ') %}
        {% set currentYear = parts[0] %}
        {% set currentName = parts[1] %}
        
        {% set groupedData = groupedData|merge({
            (currentYear): (groupedData[currentYear]|default([]))|merge([currentName])
        }) %}
    {% endif %}
{% endfor %}

{# 输出最终结果 #}
{% for year, names in groupedData %}
    {{ year }} - {{ names|join(', ') }}
{% endfor %}

两种方式都能输出你需要的合并后的列表格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:23:17