php中的三元运算符的应用 - 疯子的紫梦's 学习窝
PHP中单引号与双引号的区别
php跳转网页的方法

php中的三元运算符的应用

疯子的紫梦 posted @ 2009年3月09日 03:53 in php , 7368 阅读

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

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

 

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

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

 if(expr1){
expr2;
}else{
expr3;
}

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

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

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

 (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:
 

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

嵌套使用的三元运算符可读性不好,对日后代码维护也可能存在问题,但它比“if....else”之类的流程语句相比,它是很简练了,这是它的好处。

在使用中也可以不考虑“三元”中条件句以外的任意某一“元”,使用三元运算符运算符仍然比if语句简练。以下的语法是正确的,它们以小解引号的方式忽略第二或第三“元”:
 

 $a>$b?print"YES":"";
 $a>$b?"":print"No";
 

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

 

三元运算符也可以用来赋值:

 $a=2;
 $b=1;
 $str=($a>$b):'Yes':'No';
echo $str;
 
Avatar_small
learner 说:
2013年5月22日 13:26

$a=2;
$b=1;
$str=($a>$b):'Yes':'No';
echo $str;
Parse error: syntax error, unexpected ':' in C:\TDDownload\htdocs\welcome.php on line 4

Avatar_small
tomorror 说:
2015年1月19日 21:56

@learner: $str=($a>$b) ? 'Yes':'No';


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter