首页 > 解决方案 > 内联 if 内联 if 的奇怪行为

问题描述

我不确定此代码段发生了什么。

<?php
$statementA = true;
$statementB = true;
$statementC = false;
echo $statementA ? $statementB ? "B IS TRUE" : "B IS FALSE" : $statementC ? "C IS TRUE" : "C IS FALSE";

因为 statementA 和 statementB 都是真的,我想结果会输出 B IS TRUE。由于某种原因,它输出 C IS TRUE 这是错误的,因为 C 实际上是错误的。无论您对什么布尔值进行声明,它仍然会输出 C IS TRUE。

如果我将回声线更改为

echo $statementA ? $statementB ? "B IS TRUE" : "B IS FALSE" : ($statementC ? "C IS TRUE" : "C IS FALSE");

那么一切都会正常工作。

除了通过包装括号以提高可读性(或使用更大的 if/elseif 块)正确地做到这一点之外,为什么这会输出它的输出?

在 php 7.3 和 5.6 中测试。

我们在 C# 和 javascript 中重新运行了它,它按预期工作。

标签: phpif-statement

解决方案


推荐阅读