mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-17 14:46:00 +00:00
56 lines
1.2 KiB
ReStructuredText
56 lines
1.2 KiB
ReStructuredText
``filter``
|
|
==========
|
|
|
|
The ``filter`` filter filters elements of a sequence or a mapping using an arrow
|
|
function. The arrow function receives the value of the sequence or mapping:
|
|
|
|
.. code-block:: twig
|
|
|
|
{% set sizes = [34, 36, 38, 40, 42] %}
|
|
|
|
{{ sizes|filter(v => v > 38)|join(', ') }}
|
|
{# output 40, 42 #}
|
|
|
|
Combined with the ``for`` tag, it allows you to filter the items to iterate over:
|
|
|
|
.. code-block:: twig
|
|
|
|
{% for v in sizes|filter(v => v > 38) -%}
|
|
{{ v }}
|
|
{% endfor %}
|
|
{# output 40 42 #}
|
|
|
|
It also works with mappings:
|
|
|
|
.. code-block:: twig
|
|
|
|
{% set sizes = {
|
|
xs: 34,
|
|
s: 36,
|
|
m: 38,
|
|
l: 40,
|
|
xl: 42,
|
|
} %}
|
|
|
|
{% for k, v in sizes|filter(v => v > 38) -%}
|
|
{{ k }} = {{ v }}
|
|
{% endfor %}
|
|
{# output l = 40 xl = 42 #}
|
|
|
|
The arrow function also receives the key as a second argument:
|
|
|
|
.. code-block:: twig
|
|
|
|
{% for k, v in sizes|filter((v, k) => v > 38 and k != "xl") -%}
|
|
{{ k }} = {{ v }}
|
|
{% endfor %}
|
|
{# output l = 40 #}
|
|
|
|
Note that the arrow function has access to the current context.
|
|
|
|
Arguments
|
|
---------
|
|
|
|
* ``array``: The sequence or mapping
|
|
* ``arrow``: The arrow function
|