on'或'之间的区别是什么?小组条件树枝

时间:2017-08-24 11:12:54

标签: symfony twig conditional-statements

之间的区别是什么
  

{%if(colorTab.about为空)或(colorTab.services为空)或                           (colorTab.annonces为空)}

  

{%if(colorTab.about或colorTab.services或   colorTab.annonces)是空的}

1 个答案:

答案 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;
}