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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
php中的动态调用实例分析
Jan 07 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
thinkPHP5框架接口写法简单示例
Aug 05 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 PHP
PHP的new static和new self的区别与使用
Nov 27 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
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
php数据库备份还原类分享
2014/03/20 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
python学习必备知识汇总
2017/09/08 Python
python实现感知器算法详解
2017/12/19 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
python语言中有算法吗
2020/06/16 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
python自动化发送邮件实例讲解
2021/01/04 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
应届生如何写自荐信
2014/01/05 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
小学英语课教学反思
2016/02/15 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL