我使用Twig作为模板引擎,我真的很喜欢它.但是,现在我遇到的情况绝对必须以比我发现的更简单的方式完成.
我现在拥有的是:
{% for myVar in someArray %}
{% set found = 0 %}
{% for id, data in someOtherArray %}
{% if id == myVar %}
{{ myVar }} exists within someOtherArray.
{% set found = 1 %}
{% endif %}
{% endfor %}
{% if found == 0 %}
{{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是更像这样的东西:
{% for myVar in someArray %}
{% if myVar is in_array(array_keys(someOtherArray)) %}
{{ myVar }} exists within someOtherArray.
{% else %}
{{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一点,我还没有看到呢?
如果我需要创建自己的扩展,我如何在测试函数中访问myVar?
谢谢你的帮助!
Raf*_*ael 440
您只需要更改第二个代码块的第二行
{% if myVar is in_array(array_keys(someOtherArray)) %}
Run Code Online (Sandbox Code Playgroud)
至
{% if myVar in someOtherArray|keys %}
Run Code Online (Sandbox Code Playgroud)
Wim*_*ans 85
只是为了清除这里的一些事情.接受的答案与PHP in_array不同.
要像PHP in_array一样使用以下表达式:
{% if myVar in myArray %}
Run Code Online (Sandbox Code Playgroud)
如果你想否定这个,你应该使用这个:
{% if myVar not in myArray %}
Run Code Online (Sandbox Code Playgroud)
Dun*_*ung 10
@jake stayman之后的另一个例子:
{% for key, item in row.divs %}
{% if (key not in [1,2,9]) %} // eliminate element 1,2,9
<li>{{ item }}</li>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
尝试这个
{% if var in ['foo', 'bar', 'beer'] %}
...
{% endif %}
Run Code Online (Sandbox Code Playgroud)
虽然上面的答案是正确的,但我在使用三元运算符时发现了一种更用户友好的方法。
{{ attachment in item['Attachments'][0] ? 'y' : 'n' }}
Run Code Online (Sandbox Code Playgroud)
如果有人需要解决foreach,那么:
{% for attachment in attachments %}
{{ attachment in item['Attachments'][0] ? 'y' : 'n' }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)