如何修改Twig数组中指定元素的total值?
解决Twig数组元素修改问题
你用merge过滤器没达到预期效果,是因为Twig里对索引数组使用merge时,会把新元素直接追加到数组末尾,而不是匹配已有元素的内容去修改。
要修改索引0的元素里的total值,正确的做法是先更新该元素,再重新构建数组:
{# 第一步:取出索引0的元素,修改它的total值 #} {% set updatedFirstItem = dataSrc[0]|merge({'total': 0}) %} {# 第二步:重新构建数组,用更新后的元素替换原索引0的元素 #} {% set dataSrc = [updatedFirstItem]|merge(dataSrc|slice(1)) %}
代码解释:
dataSrc[0]|merge({'total': 0}):从原数组取出第一个元素,通过merge覆盖它的total属性,得到更新后的元素。[updatedFirstItem]|merge(dataSrc|slice(1)):先把更新后的元素放到新数组里,再用merge把原数组从索引1开始的所有剩余元素追加进来,最终得到修改后的完整数组。
如果你的数组长度固定,也可以直接手动重新定义数组:
{% set dataSrc = [ {'campgroup0': 'far', 'total': 0}, dataSrc[1], dataSrc[2] ] %}
内容的提问来源于stack exchange,提问作者Gustavo Gil
相关产品推荐
相关产品推荐

