首页 文章

Twig:if语句中的in_array或类似内容?

提问于
浏览
169

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

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

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

谢谢你的帮助!

4 回答

  • 8

    您只需要更改第二个代码块的第二行

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

    {% if myVar in someOtherArray|keys %}
    

    in是包含运算符,keys是一个返回数组键的过滤器 .

  • 393

    只是为了清除这里的一些事情 . 接受的答案与PHP in_array 不同 .

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

    {% if myVar in myArray %}
    

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

    {% if myVar not in myArray %}
    
  • 1

    @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 %}
    
  • 65

    它应该对你有所帮助 .

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

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

相关问题