1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
--TEST--
"filter" filter
--TEMPLATE--
{% set offset = 3 %}
{% for k, v in [1, 5, 3, 4, 5]|filter((v) => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in {a: 1, b: 2, c: 5, d: 8}|filter(v => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in {a: 1, b: 2, c: 5, d: 8}|filter((v, k) => (v > offset) and (k != "d")) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in [1, 5, 3, 4, 5]|filter(v => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in it|filter((v) => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in ita|filter(v => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in xml|filter(x => true) %}
{{ k }}/{{ v }}
{% endfor %}
{# we can iterate more than once #}
{% for k, v in xml|filter(x => true) %}
{{ k }}/{{ v }}
{% endfor %}
{% set coll = ['a', 'b']|filter(v => v is same as('a')) %}
{% if coll|length > 0 %}
{{- coll|join(', ') }}
{% endif %}
--DATA--
return [
'it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
'ita' => new Twig\Tests\IteratorAggregateStub(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
'xml' => new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><doc><elem>foo</elem><elem>bar</elem><elem>baz</elem></doc>'),
]
--EXPECT--
1 = 5
3 = 4
4 = 5
c = 5
d = 8
c = 5
1 = 5
3 = 4
4 = 5
c = 5
d = 8
c = 5
d = 8
elem/foo
elem/bar
elem/baz
elem/foo
elem/bar
elem/baz
a
|