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上传、管理照片示例
Oct 09 PHP
PHP中for循环语句的几种变型
Mar 16 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP判断json格式是否正确的实现代码
Sep 20 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 页面编码声明方法详解(header或meta)
2010/03/12 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
jquery创建div 实现代码
2009/04/27 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
小程序实现多列选择器
2019/02/15 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python编写计算器功能
2019/10/25 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
pygame实现飞机大战
2020/03/11 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
公务员个人年终总结
2015/02/12 职场文书
暂停营业通知
2015/04/25 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
redis内存空间效率问题的深入探究
2021/05/17 Redis
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers