如果速记使用php意外的语法错误

时间:2014-09-20 01:57:38

标签: php

function a(){
//logic here
//else return false
}

function b(){
//logic here
//else return false
}

function c(){
//logic here
//else return false
}

a() ? b() ? c(); 

我想先跑一个,如果是假的话去b,如果是假的话去c但是我意外';'错误。 还有一个疑问:如果a()返回false,它会转到b()吗?或者我需要设置为if(a() != true)

2 个答案:

答案 0 :(得分:1)

a() ? b() ? c()

仅作为

的开头有效
a() ? b() ? c() : ... : ...

这就是PHP抱怨意外;的原因。您可以阅读有关条件运算符here的更多信息。


你想要

a() || b() || c();

a() or b() or c();

PHP,就像许多语言一样,短路布尔代数所以只评估它,所以当其中一个术语返回true时,它将停止评估链。

答案 1 :(得分:0)

运算符的正确语法?:是$sth? $forTrue : $forFalse;。因此,如果您真的想使用它,那么您的最后一行应如下所示:

a() ? null : (b() ?  null : c());

但是我认为如果使用if语句,它看起来会更好并且更容易阅读。

if (!a()) {
    if(!b()) {
        c();
    }
}