您的位置主页 > 编程专区 > Php > PHP中三元运算符的扩展应用

PHP中三元运算符的扩展应用

2009-09-23    文章来源:互联网    浏览次数:1269     分享文章

三元运算符的功能与“if...else”流程语句一致,它在一行中书写,代码非常精练、执行效率更高。在PHP程序中恰当地使用三元运算符能够令脚本更为简洁、高效。代码格式如下:

 
  1. (expr1) ? (expr2) : (expr3);


解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。

实现同样的功能,若使用条件流程语句,就需要书写多行代码:
 

 
  1. if(expr1) {
  2.     expr2;
  3. else {
  4.     expr3;
  5. }

可见,前面所说的三元运算符之好并非夸张。可是,多数情况下我们只在代码较为简单的时候使用三元运算符,即执行语句只为单句的时候。如:

 
  1. $a>$b ? print "a大于b" : print "a小于b";


事实上,三元运算符可以扩展使用,当设置的条件成立或不成立,执行语句都可以不止一句,试看以下格式:
 

 
  1. (expr1) ? (expr2).(expr3) : (expr4).(expr5);

我们非常明显地看到,多个执行语句可以使用用字符串运算符号(“.”)连接起来,各执行语句用小角括号包围起来以表明它是一个独立而完整的执行语句。这样扩展后它的功能更为逼近“if...else”流程语句。

同时三元运算符还可以嵌套使用。例如,a大于b成立时:如果a小于c,那么x=c-a否则x=a-c;否则a小于b成立时:如果b小于c,那么x=c-b否则x=b-c:

 
  1. $a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);


嵌套使用的三元运算符可读性不太好,日后对代码的维护极可能存在问题,但比起“if...else”之类的流程语句,在上述情形之下,它的确太简练了,这是它的诱人之处。

对于喜欢偷懒和追求代码简洁的人来说,用三元运算符取代if流程语句应该是绝佳的选择。即使不用考虑“三元”中条件句以外的任意某一“元”,使用三元运算符仍然比if语句简练。以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”:

 
  1. $a>$b ? print "Yes" : "";
  2. $a>$b ? '': print 'No';


应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句——经测试,php4环境下,在使用三元运算符时若用echo语句打印内容,php会报错。

文章评论(查看全部)

昵 称 *
电子邮箱 *
网 址      2 + 0 = ?