php三元运算符知识汇总


Posted in PHP onJuly 02, 2015

今天在改论文在线的时候遇到了一个语句看不懂:

$if_summary = $row['IF_SUMMARY']==2?'是':'否';

后来百度后发现是PHP的三元运算符

这句话的意思就等于是

if($row['IF_SUMMARY']==2){
$if_summary="是";
}else{
$if_summary="否";
}

三元运算符的功能与“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流程语句应该是绝佳的选择。即使不用考虑“三元”中条件句以外的任意某一“元”,使用三元运算符仍然比if语句简练。以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”:

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

应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句。

注意下列一串语句的理解:

$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';

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
杏林同学录(三)
Oct 09 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
php eval函数一句话木马代码
May 21 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
PHP中foreach()用法汇总
Jul 02 #PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 #PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 #PHP
PHP中的命名空间详细介绍
Jul 02 #PHP
PHP+JS实现大规模数据提交的方法
Jul 02 #PHP
PHP中iconv函数知识汇总
Jul 02 #PHP
php统计数组元素个数的方法
Jul 02 #PHP
You might like
PHP4之真OO
2006/10/09 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
JQueryiframe页面操作父页面中的元素与方法(实例讲解)
2013/11/19 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python图像处理之镜像实现方法
2015/05/30 Python
python发送告警邮件脚本
2018/09/17 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
用python解压分析jar包实例
2020/01/16 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
python判断是空的实例分享
2020/07/06 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
架构师岗位职责
2013/11/18 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
个人借款协议书范本
2014/11/17 职场文书
技术员岗位职责
2015/02/04 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
MYSQL如何查看进程和kill进程
2022/03/13 MySQL