Twig循环中如何通过loop.index获取对应字母(1=A、2=B等)
解决Twig循环中用loop.index获取对应英文字母的问题
这个需求其实很好实现~ Twig虽然没有专门的内置函数直接把数字转成对应大写字母,但我们可以利用ASCII码的规律来轻松搞定!
核心思路
大写字母A的ASCII编码是65,B是66……刚好和loop.index(从1开始计数)的数值差64,所以我们只需要把loop.index加上64,再用Twig的chr()函数把ASCII码转换成对应的字符就行。
修改你的现有代码
把你原来的代码里的loop.index替换成转换后的字母即可:
{% for item in form.items %} {% set nom_item = 'Item' ~ chr(64 + loop.index) %} {# 示例:输出看看结果,比如第一个item会输出ItemA #} {{ nom_item }} {% endfor %}
处理超过26项的情况
如果你的循环项数可能超过26,上面的方法会得到非字母字符(比如第27项会得到[)。要是需要循环重复使用A-Z,可以加个取模处理:
{% for item in form.items %} {% set letter_index = ((loop.index - 1) % 26) + 1 %} {% set nom_item = 'Item' ~ chr(64 + letter_index) %} {{ nom_item }} {% endfor %}
这样第27项会回到ItemA,第28项是ItemB,以此类推。
内容的提问来源于stack exchange,提问作者Kristen Joseph-Delaffon
相关产品推荐
相关产品推荐

