之间的区别是什么
{%if(colorTab.about为空)或(colorTab.services为空)或 (colorTab.annonces为空)}
和
{%if(colorTab.about或colorTab.services或 colorTab.annonces)是空的}
答案 0 :(得分:1)
不同之处在于,对于第一个语句,任何变量都可以为空,对于第二个语句,您实际上可以用以下语句替换该语句
{% if (colorTab.about is empty) and (colorTab.services is empty) and (colorTab.annonces is empty) %}
这是因为在调用函数twig_is_empty
之前必须先替换每个变量。 Twig会将语句编译成以下PHP
代码
if (twig_is_empty($var1 || $var2 || $var3) {
因此,这将在运行时变为if (twig_is_empty(true) {
或if (twig_is_empty(false) {
。意味着只有3个non-empty值的组合可以为函数true
返回twig_is_emtpy
vendor / twig / twig / lib / Twig / Extension / Core.php,第1405行
function twig_test_empty($value)
{
if ($value instanceof Countable) {
return 0 == count($value);
}
return '' === $value || false === $value || null === $value || array() === $value;
}