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 相关文章推荐
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
用Zend Encode编写开发PHP程序
Feb 21 PHP
PHP遍历二维数组的代码
Apr 22 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 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结合表单实现一些简单功能的例子
2011/06/04 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
JS实现点击下载的小例子
2013/07/10 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
浅析JS运动
2015/12/28 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
javascript实现日历效果
2019/06/17 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python安装gdal的两种方法
2019/10/29 Python
Python文件路径名的操作方法
2019/10/30 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
python小白切忌乱用表达式
2020/05/29 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
意大利在线药房:Saninforma
2021/02/11 全球购物
广播节目策划方案
2014/05/23 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
解决redis批量删除key值的问题
2022/03/23 Redis