php中的三元运算符详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-05-19 14:02:33 浏览: 评论:0
三元运算符的功能与“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;
- echo
- $a == 1 ? 'one' :
- $a == 2 ? 'two' :
- $a == 3 ? 'three' :
- $a == 4 ? 'foura' : 'other';
- echo "n";
结果是:four
一开始想不明白,按照我的理解,应该是这样的逻辑:
- echo ($a == 1 ? 'one' :
- ( $a == 2 ? 'two' :
- ( $a == 3 ? 'three' :
- ($a == 4 ? 'four' : 'other'))));
- //输出为:two
后来在kevinG(qq:48474)的指教下,参看php手册,终于明白了php的三元符的解释是从左到右的.
- <?php
- // 乍看起来下面的输出是 'true'
- echo (true?'true':false?'t':'f');
- // 然而,上面语句的实际输出是't',因为三元运算符是从左往右计算的
- // 下面是与上面等价的语句,但更清晰
- echo ((true ? 'true' : 'false') ? 't' : 'f');
- ?>
所以上面的可以这样解释:
- echo (
- ((($a == 1 ? 'one' :
- $a == 2) ? 'two' :
- $a == 3 )? 'three' :
- $a == 4 )? 'four' : 'other');
其实这个涉及到类型转换:
$a==1=>false=>$a==2?true=>'two'=true=>'three'=true=>'four'
Tags: php 三元运算符
- 上一篇:php入门教程,?号表达式
- 下一篇:php 运算符优先级
相关文章
- ·php 流程控制语句(2013-11-13)
- ·php for循环语句的几种用法分析(2013-11-13)
- ·php中switch语句的用法介绍(2013-11-13)
- ·php 判断常量、变量和函数是否存在(2014-01-07)
- ·php 流程控制语句(2014-01-09)
- ·php if..else 循环(2014-01-09)
- ·PHP中foreach循环详解(2014-01-09)
- · php foreach用法和实例(2014-01-09)
- ·php for的高级运用(2014-01-13)
- ·PHP条件语句(if else/switch)语法与示例(2014-02-05)
- ·PHP 循环语句基本语法结构笔记(2014-02-10)
- ·PHP 条件语句基本语法结构(2014-02-10)
- ·PHP 循环控制语句几种方法详解(2014-02-20)
- ·PHP入门教程之If…Else 条件判断语句(2014-02-22)
- ·PHP Switch 语句之学习笔记(2014-02-22)
- ·PHP循环之PHP基础入门教程(2014-02-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)