在Twig中,检查是否存在数组的特定键

use*_*610 68 php arrays conditional short-circuiting twig

在PHP中,我们可以使用该函数检查数组中是否存在键array_key_exists().

在Twig模板语言中,我们可以通过使用if语句来检查变量或对象的属性是否存在,如下所示:

{% if app.user %}
do something here
{% else %}
do something else
{% endif %}
Run Code Online (Sandbox Code Playgroud)

但是我们如何使用Twig 检查数组的键是否存在?我试过了{% if array.key %},但它给了我一个错误:

Key "key" for array with keys "0, 1, 2, 3...648" does not exist
Run Code Online (Sandbox Code Playgroud)

由于将数据传递到模板的主要方法之一是使用数组,似乎应该有一些方法来做到这一点.有什么想法吗?

php*_*r01 162

Twig例子:

{% if array.key is defined %}
  // do something
{% else %}
  // do something else
{% endif %}
Run Code Online (Sandbox Code Playgroud)

  • 如果key是变量,则需要使用`{%if array [key]%}`或`{%if array [key]定义为%}`.`array.key`尝试访问数组中的索引'key'. (12认同)
  • `{%if array.key%}`有效,但它是检查数组键是否为空的语法.[twig.sensiolabs.org/doc/tags/if.html#if](http://twig.sensiolabs.org/doc/tags/if.html#if) (3认同)
  • 为什么我们不能只使用 `{% if array.key %}`?它出什么问题了?在 JS 中,它是完全有效的语句,但在 Twig 中则不是! (2认同)

小智 19

您可以使用keys树枝功能

{% if myVar in someOtherArray|keys %}

  • 如果在循环中使用,这是不好的。。。还有更好的答案,例如使用“已定义”。例如:{%,如果someOtherArray [myVar]被定义,%} (2认同)
  • 在钥匙不适合机器的情况下,此方法效果更好。例如数组['不友好'] (2认同)