php三元运算符知识汇总

 更新时间:2015年07月02日 10:44:03   投稿:hebedich  
三元运算符语法:条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。下面我们来详细探讨下。

今天在改论文在线的时候遇到了一个语句看不懂:

$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';

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • Laravel 实现在Blade模版中使用全局变量代替路径的例子

    Laravel 实现在Blade模版中使用全局变量代替路径的例子

    今天小编就为大家分享一篇Laravel 实现在Blade模版中使用全局变量代替路径的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • fckeditor上传文件按日期存放及重命名方法

    fckeditor上传文件按日期存放及重命名方法

    这篇文章主要介绍了fckeditor上传文件按日期存放及重命名方法,本文修改了相关PHP文件实现这二个需求,需要的朋友可以参考下
    2015-05-05
  • Yii redis集合的基本使用教程

    Yii redis集合的基本使用教程

    这篇文章主要给大家介绍了关于Yii redis集合的基本使用教程,文中通过示例代码介绍的非常详细,对大家学习或者使用Yii、redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • Yii2 批量插入、更新数据实例

    Yii2 批量插入、更新数据实例

    这篇文章主要介绍了Yii2 批量插入、更新数据实例的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • thinkPHP使用post方式查询时分页失效的解决方法

    thinkPHP使用post方式查询时分页失效的解决方法

    这篇文章主要介绍了thinkPHP使用post方式查询时分页失效的解决方法,通过使用JavaScript动态修改页面元素结合thinkPHP查询语句解决分页失效的问题,需要的朋友可以参考下
    2015-12-12
  • php 如何禁用eval() 函数实例详解

    php 如何禁用eval() 函数实例详解

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险并经常会出现一些问题,今天我们就一起来看看eval函数对数组的操作及php 如何禁用eval() 函数,需要的朋友可以参考下
    2016-12-12
  • PHP 芝麻信用接入的注意事项

    PHP 芝麻信用接入的注意事项

    本文给大家整理了接入芝麻api借口的两点注意事项,对php 芝麻信用接入感兴趣的朋友通过本文一起学习吧
    2016-12-12
  • PHP生成唯一订单号的方法汇总

    PHP生成唯一订单号的方法汇总

    前阵子有个电子商务项目,需要生成订单号。当时的考虑很简单,取系统时间加上随机数,或者使用 uniqid() 方法。仔细考虑下上述方法,在顾客购买量少的情况下,订单重复的可能性为零,但是在购买高蜂期生成的订单号重复是很有可能发生的。
    2015-04-04
  • php shell超强免杀、减少体积工具实现代码

    php shell超强免杀、减少体积工具实现代码

    这不是webshell,只是个webshell免杀工具,切勿当初webshell使用,仅限免杀phpwebshell
    2012-10-10
  • 浅析iis7.5安装配置php环境

    浅析iis7.5安装配置php环境

    windows server 2008 和 windows server 2003 是目前国内比较主流的服务器操作系统,其搭建php的环境也是多种多样,其中IIS+Fastcgi+php+mysql安装是最简单的。
    2015-05-05

最新评论