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的FTP学习(四)
Oct 09 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
php并发加锁示例
Oct 17 PHP
php实现URL加密解密的方法
Nov 17 PHP
yii2的restful api路由实例详解
May 14 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 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数组的维度
2013/06/10 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
JavaScript登录验证基础教程
2017/11/01 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
python获取目录下所有文件的方法
2015/06/01 Python
有关Python的22个编程技巧
2018/08/29 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python如何使用input函数获取输入
2020/08/06 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
终端业务员岗位职责
2013/11/27 职场文书
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
校长寄语大全
2014/04/09 职场文书
商场父亲节活动方案
2014/08/27 职场文书
营销与策划实训报告
2014/11/05 职场文书
画展邀请函
2015/01/31 职场文书
认真学习保证书
2015/02/26 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
指导教师推荐意见
2015/06/05 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
高一化学教学反思
2016/02/22 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL