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 相关文章推荐
用PHP编程语言开发动态WAP页面
Oct 09 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 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
Terran历史背景
2020/03/14 星际争霸
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
js调试系列 初识控制台
2014/06/18 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
JavaScript模拟push
2016/03/06 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
python 默认参数相关知识详解
2019/09/18 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
美国眼镜网:GlassesUSA
2017/09/07 全球购物
EJB的基本架构
2016/09/22 面试题
专科文秘应届生求职信
2013/11/18 职场文书
材料化学专业求职信
2014/07/15 职场文书
毕业生学校组织意见
2015/06/04 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书