三元运算符的功能与其他“如果…”流程语句一致,它在一行中书写,代码非常精练,执行效率更高。
在PHP程序中恰当地使用三元运算符能够令脚本更为简洁,高效。
代码格式如下:(expr1) ?(expr2): (expr3);
解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。
实现同样的功能,若使用条件流程语句,就需要书写多行代码:
如果(expr1) {
expr2;
}其他{
expr3;
}
可见,前面所说的三元运算符之好并非夸张。可是,多数情况下我们只在代码较为简单的时候使用三元运算符,即执行语句只为单句的时候。如:
a>美元;b美元?打印“大于b”:打印“小于b”;
<强> (expr1) ?(expr2)。(expr3): (expr4)。(expr5);
强>我们非常明显地看的到,多个执行语句可以使用用字符串运算符号(“。”)连接起来,各执行语句用小角括号包围起来以表明它是一个独立而完整的执行语句。这样扩展后它的功能更为逼近“如果……其他“流程语句。
同时三元运算符还可以嵌套使用。例如,一个大于b成立时:如果一个小于c,那么x=c - a否则x=a - c,否则一个小于b成立时:如果b小于c,那么x=cb,否则x=c:
<强> a>美元;b美元?(x=美元a<$ c ?$ c - $ a: a - c):美元$ x=(b
对于喜欢偷懒和追求代码简洁的人来说,用三元运算符取代如果流程语句应该是绝佳的选择。即使不用考虑“三元”中条件句以外的任意某一“元”,使用三元运算符仍然比如果语句简练。以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第“三元”:
a>美元;b美元?打印“是的”:“”;
a>美元;b美元?”:打印“不”;
应该注意的是:在使用三元运算符时,建议使用打印语句替代呼应语句。
注意下列一串语句的理解:
$ str=$ _GET [' abc '] ?“wangjinbo”:“wjb”;
这里不能理解为:当美元str等于$ _GET [' abc '],,时,赋值为“wangjinbo”,,否则赋值为,“wjb”;因为一:判断相等应该用==,因原二:三元算符的语法是如上所示:(expr1) ?(expr2): (expr3),显然上面的二元,三元“wangjinbo”或“wjb”不能单独构成一个有意义的表达式;
正确理解是:当$ _GET [' abc ']为空(也就是否,PHP中",null, 0, undifine,都等效布尔值false)时,将美元str赋值为“wangjinbo”,否则赋值为“wjb”;