Twig:in_数组或类似的if语句?
我使用的模板引擎,我真的很喜欢它。然而,现在我遇到的情况肯定比我发现的更简单 我现在得到的是:Twig:in_数组或类似的if语句?,twig,Twig,我使用的模板引擎,我真的很喜欢它。然而,现在我遇到的情况肯定比我发现的更简单 我现在得到的是: {% for myVar in someArray %} {% set found = 0 %} {% for id, data in someOtherArray %} {% if id == myVar %} {{ myVar }} exists within someOtherArray. {% set fo
{% 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 %}
{% for myVar in someArray %}
{% if myVar in someOtherArray|keys %}
{{ myVar }} exists within someOtherArray.
{% else %}
{{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}
有没有一种我还没有见过的方法可以实现这一点
如果需要创建自己的扩展,如何在测试函数中访问myVar
谢谢你的帮助 您只需将第二个代码块的第二行从
{% if myVar is in_array(array_keys(someOtherArray)) %}
到
是一个包含操作符和一个过滤器,返回数组键。只是为了清除这里的一些内容。接受的答案与_array中的PHP不同 要在数组中执行与PHP相同的操作,请使用以下表达式:
{% 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 %}
{%用于键,row.divs%中的项]
{%if(键不在[1,2,9])%}//消除元素1,2,9
{{item}}
{%endif%}
{%endfor%}
它应该对您有所帮助
{% for user in users if user.active and user.id not 1 %}
{{ user.name }}
{% endfor %}
更多信息:试试这个
{% 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 %}
下面是一个答案,它包含了这些天来细枝的所有可能性: 要实现这样的目标:
{% 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 %}
{% for myVar in someArray %}
{% if myVar in someOtherArray|keys %}
{{ myVar }} exists within someOtherArray.
{% else %}
{{ myVar }} doesn't exist within someOtherArray.
{% endif %}
{% endfor %}
()
您还可以使用并拥有以下一行:(细枝>=1.41或>=2.10或任何3.x版本) 它的输出非常相似
还可以看到这个小树枝:如果你想实现与PHP中的数组()相同的效果,那么就使用键过滤器+1,并且否定是
{%If item not in array%}
和{%If not{u entry.id in array%}
,因此它不同于{%If not var is null%}
。你也可以使用defined:{%如果定义了someOtherArray.myVar%}
()下面是一个基于OP代码和此答案中的代码的完整解决方案:Яaffael1984的答案是正确的。但您试图做的事情应该在控制器中完成,而不是在视图中!格式化您的数组,然后为视图提供一个干净的东西以获得最佳可读性。我想这确实取决于ntext哪种方式更有意义,你不认为吗?这两点似乎已经在2012年被接受的答案的评论中被涵盖。这个答案似乎没有添加任何额外内容。@William Isted这个答案添加了正确的方法来执行PHP的in_array()
在twig中。@WilliamIsted然后,接受的答案应该被编辑为正确的。最好将注释中给出的答案转换为实际答案,因为注释更可能被删除。^--删除或干脆忽略。我不知道为什么这个答案得不到投票。而这一行代码是您可以拥有的最小且完美的代码现在。例如,在For循环中使用{{cfg.static_site中的item.value?'checked=“checked”:'}}
(检查该数组中是否存在特定项)将检查该项。在Twig 2.10中不推荐在For标记上添加if条件。在“For”正文中改用过滤器或“if”条件(如果您的条件取决于循环内更新的变量)。