字符串比较运算符如何在Twig中工作?

Sco*_*euk 32 php twig

这怎么可能?这似乎是一个非常奇怪的问题(除非我遗漏了一些非常简单的事情):

码:

{{ dump(nav) }}
{% if nav == "top" %}
    <div class="well">This would be the nav</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

输出:

boolean true
<div class="well">This would be the nav</div>
Run Code Online (Sandbox Code Playgroud)

截图

基本上,它输出如果是真的,但它并不意味着要检查是否为真.

Ala*_*blo 43

这很容易重现:

{% set nav = true %}
{% if nav == "top" %}
ok
{% endif %}
Run Code Online (Sandbox Code Playgroud)

显示ok.

根据文件:

Twig允许在任何地方表达.这些工作常规PHP 非常相似,即使您不使用PHP,也应该对它感到满意.

如果您在纯PHP中测试以下表达式:

$var = true;
if ($var == "top") {
  echo 'ok';
}
Run Code Online (Sandbox Code Playgroud)

它也会显示确定.

关键是:你不应该比较不同类型的变量.在这里,您将bool与字符串进行比较:如果您的字符串不为空或者它不仅包含零,则它将评估为true.

您还可以查看PHP手册,了解如何与不同类型进行比较.

编辑

您可以使用相同的测试来进行严格的比较,并避免类型杂耍问题.