Twig - 检查数组中是否有任何数字大于 0.00

Twig - Check if any number in array is greater than 0.00

请有人帮助我,我需要 运行 一些 html 如果数组中存在大于 0.00 的值,则基于以下规则。

运行 作为第 3 项的 html 的值是否应该大于 0.00

项目 数量
1 0.00
2 0.00
3 4.99

不应该 运行 html 因为没有项目的值大于 0.00

项目 数量
1 0.00
2 0.00
3 0.00

我相信我应该使用 IN,但我不知道如何检查数字,只能检查字符串。

{% if 数组中的值 %}运行 html {% endif %}

这里没有几个选项可以做到这一点,

  1. 树枝解决方案

要测试是否有任何值大于您需要循环所有元素来测试它,因为您无法跳出 twig 内的循环。您建议的 in 测试对此不起作用,因为您不知道数组中有哪些元素

{% set sum = 0 %}
{% for value in array %}
    {% set sum = sum + value %}
{% endfor %}
{% if sum > 0 %}
    {# display table #}
{% endif %}
  1. PHP解决方案

你可以通过获取元素的总和在控制器中解决这个问题

<?php
    $data = [ 0, 0, 3, 0, 0, ];
    echo $twig->render('template.twig', [
        'data'          => $data,
        'have_values'   => array_sum($data) > 0,
    ]);
{% if has_values %}
    {# display table #}
{% endif %}
  1. 延长树枝

您还可以扩展 twig,如果您在多个地方需要此结构,这将是最佳解决方案。

下面的代码片段使 PHP 函数 array_sum 在您的模板中可用 扩展twig要看你用的是什么框架,你没提供,我提供的是单机版

<?php
    $twig->addFilter(new \Twig\Filter('array_sum', 'array_sum'));
{% if data|array_sum %}
    {# display data #}
{% endif %}