多值浮点字段求和问题:基于Twig计算复选框选项总分
多值浮点字段总分计算实现方案
问题背景
field_iab_quiz_gov_q3 是一个浮点型多值字段,对应复选框选项如下:
2.1|Network Security Policy 2.2|Security Awareness and Training Policy 2.3|Change Management Policy 2.4|Incident Response Policy 2.5|Remote Access Policy 2.6|Vendor Management Policy 2.7|Password Creation and Management Policy 2.8|Access Control Policy 2.9|Data Retention Policy
当前使用的Twig代码会输出每个选中选项的单独百分比:
{% set weight = 0.07 %} {{ field_iab_quiz_gov_q3|striptags * weight +2 }}%
现在需要计算所有选中选项的总分(例如仅选前两项时总分应为 4.301%),但尝试field_iab_quiz_gov_q3_0或content.field_iab_quiz_gov_q3[0]等方式访问字段元素均失败。
解决方案
Drupal多值字段在Twig中以数组形式存在,每个选中项的浮点值存储在item.value属性中,需遍历字段项来累加计算总分:
{% set weight = 0.07 %} {% set total_score = 0 %} {# 遍历所有选中的字段项 #} {% for item in field_iab_quiz_gov_q3 %} {# 提取选项的浮点值并计算单个项的百分比,累加到总分 #} {% set single_score = item.value|float * weight + 2 %} {% set total_score = total_score + single_score %} {% endfor %} {# 格式化输出,保留三位小数的百分比结果 #} {{ total_score|number_format(3) }}%
关键说明
- 不要使用
field_iab_quiz_gov_q3_0这类命名或直接索引content数组,这不是Drupal多值字段的正确访问方式 - 遍历
field_iab_quiz_gov_q3即可获取所有选中项,每个项的value属性对应选项的浮点数值 - 用
number_format(3)确保输出的百分比保留三位小数,和单个选项的输出精度一致
内容的提问来源于stack exchange,提问作者GuyManDude
相关产品推荐
相关产品推荐

