一尘不染

PHP多个三元运算符未按预期工作

php

为什么要打印2

echo true ? 1 : true ? 2 : 3;

以我的理解,它应该打印1

为什么它没有按预期工作?


阅读 245

收藏
2020-05-26

共1个答案

一尘不染

因为您编写的内容与以下内容相同:

echo (true ? 1 : true) ? 2 : 3;

如您所知1被评估为true

您期望的是:

echo (true) ? 1 : (true ? 2 : 3);

因此,请始终使用大括号以避免此类混淆。

正如已经写过的,三元表达式在PHP中是关联的。这意味着首先将执行从 左边开始 的第一个,然后是第二个,依此类推。

2020-05-26