php - 内联 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 中重新运行了它,它按预期工作。
解决方案
推荐阅读
- ubuntu - Bochs:显示库“sdl”不可用
- javascript - 将多张图片上传到 Firebase 存储时获取它们的 url
- spring-security - 计划作业中的 Spring AuditingHandler
- qt - 使用 QQmlApplicationEngine 使来自单独文件的新窗口出现或消失
- c++ - 向量
--- 关于类中复制构造函数的问题 - c++ - 用数组或静态向量替换向量以获得更好的方法
- sql - 基于 select 作为列名的 SQL 连接
- c# - AutoMapperMappingException:缺少类型映射配置或不支持的映射。匿名类型到类
- opengl-es - Google ANGLE(几乎原生图形层引擎)翻译支持
- tensorflow - CNN 和 LSTM 用于 Keras 中的图像字幕