为什么在速记if-then-else中返回"true"时为空值?

Dam*_*eem 1 php if-statement shorthand-if control-structure

这不是一个"问题",而是一个"为什么"的问题.

基于以下示例:

echo 'test' . ( true ?  : 'some-test' );
Run Code Online (Sandbox Code Playgroud)

为什么结果如此:test1而不是人们所期望的:test.

或者换句话说:为什么是空的返回语句1(或实际true)而不是null

dec*_*eze 8

从PHP 5.3开始,?:可以省略三元运算符的中间部分.
foo ?: bar相当于foo ? foo : bar.所以true ?: ...总是返回第一个true.

foo ? : bar具有"如果是真的"的意思是并且总是无效的,因为这个表达式必须返回一些东西,它不能只返回任何东西.如果有的话,你想要这个:foo ? null : bar.