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

我使用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 %} 

我正在寻找的是更像这样的东西:

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

有没有办法做到这一点,我还没有看到呢?

如果我需要创build自己的扩展,如何在testing函数中访问myVar?

谢谢你的帮助!

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

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

 {% if myVar in someOtherArray|keys %} 

in是包含操作符,并键入一个返回数组键的filter。

只是为了清除这里的一些东西。 被接受的答案与PHP in_array不一样。

要像PHP in_array一样使用下面的expression式:

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