枝:in_array或类似的可能在if语句?

我使用嫩枝作为模板引擎,我真的很喜欢它。然而,现在我遇到了一个肯定可以用比我发现的更简单的方法来完成的情况。

我现在拥有的是:

{% 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 %}

我想要的是这样的东西:

{% 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 %}

有没有一种我还没有看到的方法来完成这个?

如果我需要创建自己的扩展,我如何才能访问myVar在测试函数?

谢谢你的帮助!

334542 次浏览

你只需要改变你的第二个代码块的第二行

{% if myVar is in_array(array_keys(someOtherArray)) %}

{% if myVar in someOtherArray|keys %}

是包含操作符,是返回数组键的过滤器。

只是为了澄清一些事情。被接受的答案与PHP in_array不一样。

要像PHP in_array一样,使用以下表达式:

{% if myVar in myArray %}

如果你想否定这个,你应该用这个:

{% if myVar not in myArray %}

另一个关于@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 %}

它应该对你有帮助。

{% for user in users if user.active and user.id not 1 %}
\{\{ user.name }}
{% endfor %}

更多信息:http://twig.sensiolabs.org/doc/tags/for.html

试试这个

{% if var in ['foo', 'bar', 'beer'] %}
...
{% endif %}

虽然上面的答案是正确的,但我发现了一些更用户友好的方法,而使用三元操作符。

\{\{ attachment in item['Attachments'][0] ? 'y' : 'n' }}

如果有人需要完成foreach,

{% for attachment in attachments %}
\{\{ attachment in item['Attachments'][0] ? 'y' : 'n' }}
{% endfor %}

下面是一个用Twig最近的所有可能性来完成答案的问题:

为了达到这样的效果:

{% for myVar in someArray %}
{% if myVar in someOtherArray|keys %}
\{\{ myVar }} exists within someOtherArray.
{% else %}
\{\{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}

(https://twigfiddle.com/0b5crp)

你也可以使用数组映射并有以下一行代码 (树枝>= 1.41或>= 2.10或任意3。x版本)< /一口>

\{\{ someArray|map(myVar => myVar ~ (myVar not in someOtherArray|keys ? ' doesn\'t') ~ ' exists within someOtherArray.')|join('\n') }}

输出的结果非常相似。

也可以看到这个树枝小提琴:https://twigfiddle.com/dlxj9g

{%如果myArray %}中的myVar没有键可以帮助我