8

我有一个简单的浮点数组。我需要将其显示为逗号分隔的字符串。

{{ arr|join(', ') }}

由于过于微不足道的准确性,因此是不好的解决方案。

{% for val in arr %}
    {{val|number_format(2)}},
{% endfor %}

不好,因为末尾有多余的逗号。

我想做这样的事情:

{{ arr|map(number_format(3))|join(', ') }}

但我还没有找到过滤器map或类似过滤器的树枝。Аnd 我不知道如何实现这样的过滤器。

4

3 回答 3

8

为什么不使用loop变量?

{% for val in arr %}
    {{val|number_format(2)}}
    {% if not loop.last %}, {% endif %}
{% endfor %}
于 2016-10-24T17:59:41.760 回答
6

快速回答 (TL;DR)

详细解答

语境

  • Twig 2.x(截至 2017 年 2 月 8 日星期三的最新版本)

问题

  • 场景: DeveloperGarricSugas 希望将高阶函数应用于 Twig 变量
    • 高阶函数允许对任何 Twig 变量进行任何各种转换
  • Twig 对高阶函数的支持有限
  • 尽管如此,还是存在为此的插件库
  • 自定义过滤器或函数也可以用来模拟这个

Example01

  • DeveloperGarricSugas 从一个顺序索引的数组开始
  • 转换BEFOREAFTER(大写首字母)
{%- 设置 mylist = ['alpha','bravo','charlie','delta','echo'] -%}

前:
['alpha','bravo','charlie','delta','echo']

后:
['Alpha','Bravo','Charlie','Delta','Echo']

解决方案

{%- set mylist = mylist|map(=> _|capitalize) -%}    

陷阱

  • Twig 高阶函数有限支持来自插件库
  • 上述解决方案不适用于原生 Twig

也可以看看

于 2017-02-08T20:09:56.347 回答
1

快速回答 (TL;DR)

  • 替代方法是使用 Twig 循环(解决方法)

解决方法

{%- 设置 aaold = [1.234,234.56,11.222,22.333] -%}
{%- 重新设置 = [] -%}
{% for item in aaold -%}
  {{ aanew|merge(item|number_format(3)) }}
{% endfor %}
{{ 重新 | 加入(', ') }}

陷阱

  • 需要使用array|merge
  • 需要添加循环控制结构,这意味着额外的代码膨胀
于 2017-02-10T01:19:34.753 回答