在Twig中,检查一个数组的特定键是否存在
在PHP中,我们可以使用函数array_key_exists()
来检查数组中是否存在一个键。
在Twig模板语言中,我们可以简单地通过使用if
语句来检查variables或对象的属性是否存在,如下所示:
{% if app.user %} do something here {% else %} do something else {% endif %}
但是我们如何使用Twig来检查数组的键是否存在? 我尝试{% if array.key %}
,但它给了我一个错误:
Key "key" for array with keys "0, 1, 2, 3...648" does not exist
作为将数据传递到模板的主要方式之一是使用数组,似乎应该有一些这样做的方法。 有什么想法吗?
树枝例子:
{% if array.key is defined %} // do something {% else %} // do something else {% endif %}
你可以使用keys
function
{% if myVar in someOtherArray|keys %}
快速回答(TL; DR)
- DeveloperTLindel想要testingTwig中是否存在数组键。
- DeveloperTLindel想要捕获与未定义密钥相关的任何错误。
- 这可以使用
default
filter来处理。
详细的答案
上下文
- Twig 2.x(Wed 2017-03-08最新版本)
- 一般用途的
default
filter。
问题
- 场景:
- DeveloperTLindel想要testingTwig中是否存在数组键。
- DeveloperTLindel希望避免由可能未定义的键导致的任何错误或exception。
解
- DeveloperTLindel可以使用
default
filter。 - 由于未定义的variables,
default
filter捕捉到任何exception,并允许替代值的短路替代。 -
default
filter是可链接的。
Example01
{# - **************************************** testing关联数组中的单个键 - #} {% - set mystring = myarray ['key-no-existo'] | default('__ BLANK__') - %} {# - **************************************** testing关联数组中的多个键 - #} {% - 设置mystring = myarray ['alpha'] |默认(myArray的[ '喝彩']) |默认(myArray的[ '查理']) |默认( '__ BLANK__') - %}
也可以看看
- SO:类似的问题与不存在或空variables有关
- SO:一般用途的默认filter