![]() |
1
15
嗯,是吗?和:具有相同的优先级,因此PHP将依次从左到右分析每个位:
弗斯特
“one”为true(非空字符串),因此“two”是最终结果。 |
![]() |
2
7
基本上,解释器从左到右对该表达式进行计算,因此:
被解释为
parateheses中的表达式的计算结果为true,因为“one”和“two”都不是null/o/其他形式的false。 所以如果它看起来像:
它会印三张。为了使其正常工作,您应该忘记组合三元运算符,并对更复杂的逻辑使用常规的ifs/switch,或者至少使用括号,以便解释程序理解您的逻辑,而不是以标准的ltr方式执行检查:
|
![]() |
3
5
当您使用括号时,它工作正常:
我不完全理解,但对于口译员来说,没有括号,语句必须如下所示:
第一个条件的结果似乎作为整个三元运算的结果返回。 |
![]() |
4
1
我认为是这样评价的:
($test='一'?'one“:$test='two')是非零/空的,因此'two'是逻辑输出 如果您希望它正常工作,请写下:
|
![]() |
5
1
PHP的 documentation 说:
如果在错误的语句周围加上括号,它将打印
|
![]() |
6
1
三元运算符是按照外观的顺序执行的,因此您真正具有:
|
![]() |
7
0
嵌套的三元操作很恶心!上面的解释说明了原因。 基本上这是逻辑:
|