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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
php中iconv函数使用方法
May 24 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
php 操作调试的方法
Jul 12 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 26 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
星际中的相关伤害
2020/03/04 星际争霸
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
es6函数中的作用域实例分析
2020/04/18 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python多项式回归的实现方法
2019/03/11 Python
django 读取图片到页面实例
2020/03/27 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
住宅使用说明书
2014/05/09 职场文书
大学计划书范文800字
2014/08/14 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
python实现双链表
2022/05/25 Python