PHP 三元运算符 ?: 结合方向:自右往左

示例

如 status 有值为 1,2 和 3 三种情况,分别对应 type 的值:C,PHP 和 Python。

错误做法:

1
2
3
4
5
6

$type = $status == 1 ?

'C' :

$status == 2 ? 'PHP' : 'Python';

无论 status 为任何值,得到的 type 的值都是 PHP。因为,PHP 三元运算符 ?: 的结合方向是自右往左

即,上面的代码实际上是这样执行的:

1
2

$type = ($status == 1 ? 'C' : $status == 2) ? 'PHP' : 'Python';

正确做法:

1
2
3
4
5
6

$type = $status == 1 ?

'C' :

($status == 2 ? 'PHP' : 'Python');