缘起

今天阅读 Laravel 的源码时发现"三元运算符"的一种简洁写法:

$otherKey = $otherKey ?: $instance->getKeyName();

?: 是写在一起的!

"三元运算符"是什么?

"三元运算符"可以用一行代码进行逻辑判断, 从而替代常见的 if else 变量赋值判断:

if($condition)){

$result = 'some default value';

} else{

$result = 'other default value';

}

上面的代码用"三元运算符"来写:

$result = $condition ? 'some default value' : 'other default value'

即 boolean_expression ? val_if_true : val_if_false

当碰到一种特殊但是常见的 if else 判断时, 三元运算符还可以更加简化:

"三元运算符"的简写

如果 "if else 变量赋值判断"的逻辑如下:

if($variable)){

$result = $variable; //"值"和"判断条件"是一样的

} else{

$result = 'other default value';

}

"值"和"判断条件"是一样的.

通常的"三元运算符"是这样的:

$result = $variable ? $variable : 'other default value'

简写的"三元运算符"是这样的:

$result = $variable ?: 'other default value'

即 expr ? expr : val_if_false 简写成了 expr ?: val_if_false

注意:

这种写法是在 PHP 5.3 引入的, 所以不要在之前的版本中使用;

Since PHP 5.3, it is possible to leave out the middle part of the conditional operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

建议不要嵌套使用"三元运算符", 因为很难理解.

跳出"三元运算符"

有人将下面这种判断简写成"三元运算符":

$rule1 = true;

$rule2 = false;

$rule3 = true;

if($res) {

echo "good";

} else {

echo "fail";

}

$res = (($rule1 == true) && ($rule2 == false) && ($rule3 == true)) ? true : false;

讨论中有人提到, 这种情况没有必要使用"三元运算符", 只要写成这样就可以了:

$res = (($rule1 === true) && ($rule2 === false) && ($rule3 === true));

不要为了用而用.

题外

听到"三元运算符"的概念, 感觉很高大上, 今天查英文注释才知道 "三元" 仅仅就是指 "三个部分". 囧

"三元运算符" = Ternary operator

"ternary" = composed of three parts / 由三个部分组成

参考文章

文章历史

2017/04/30 (第一次发布)

2017/06/05 修改润色

2018/11/28 修改润色

如果你觉得我的文章对你有用, 请打个"喜欢", 或者给些改进的建议 _

php变量简写_PHP 三元运算符简写相关推荐

  1. PHP中三元运算符的用法_php 三元运算符实例详细介绍

    三元运算符的功能与"if....else"流程语句一致,它在一行中书写,代码精练.执行效率高.在PHP程序中恰当地使用三元运算符能够让脚本更为简洁.高效.代码的语法如下: (exp ...

  2. PHP中三元运算符的用法_PHP 三元运算符的使用

    从学PHP到现在将近半年时间,今天在李炎恢老师的课程中看到一个这样的语句class Factory { static private $_action = null; static public fu ...

  3. php 三元运算 简写,es6 三元运算(三元类目)符语法与简写,多条件判断与??::形式 - Laravel学习网...

    三元运算符就是替代传统if-else语句让更简洁. 一.三元运算标准写法 我们传统的写法为: const x = 20; let answer; if (x > 10) { answer = ' ...

  4. java三目运算符判断boonlean,java三元运算符

    首先看一下三元运算符的格式 [条件语句] ? [表达式1] : [表达式2] 其中如条件语句为真执行表达式1,否则执行表达式2.简单的例子就不举了,来点其它的.在JDK1.5以前的版本中,表达式1和表 ...

  5. Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)

    摘要 Java基础重温_02: 运算符(算术运算.+操作.赋值运算.自增自减.关系运算(比较).逻辑运算.短路逻辑运算.三元运算) 三元运算符案例(2只老虎:2个变量比较.三个和尚:3个变量比较) 键 ...

  6. java 三元运算符

    三元运算符要求大家对前面几种运算符都有了解 如果不了解可以看一下我之前的文章 三元运算符的基本写法为 值 = 条件?值1:值2; 当条件成立时 最终值等于 值1 若条件不成立 则等于值2 这个写法确实 ...

  7. php判断简写,怎么简写php 中的三元运算符

    今天我发现了PHP三元运算符的一个小小的用法. 这给我干涸的大脑一点乐趣! PHP 三元运算符是对参数赋值时候的一个简洁的主要用法. 一个主要的用法: PHP 三元运算符能够让你在一行代码中描述判定代 ...

  8. PHP三元运算符的简写形式

    1.一般的if...else形式 if(isset($title)){$output = $title; }else{$output = '默认标题'; } 2.三元运算符一般形式 $output = ...

  9. PHP中三元运算符的用法_php中三元运算符用法_PHP教程

    语法:条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2. 代码如下 $id = isset($_GET['id']) ? $_GET['id'] : ...

最新文章

  1. lisp 焊缝_超声波焊接工具性能参数求解与参数图绘制
  2. acronym与abbr
  3. DotNetNuke(DNN)升级攻略(DNN 4.3.7至DNN 4.6.0)
  4. 搭建本地Yum软件源安装Cloudera Manager 5
  5. 栈、堆、静态存储区和程序的内存布局
  6. 【杂谈】认识有三AI的一年,从机械转行CV到专栏作者
  7. xampp php连接mysql数据库_关于PHP xampp连接数据库之后查询失败,数据库连接成功,表中也有数据...
  8. android studio中使用x5 webview来读写cookies的问题
  9. gRPC四种模式、认证和授权实战演示
  10. el-tooltip位置不灵活_要提高步伐移动的灵活性,注意这5点,加以改正,步伐不再沉重...
  11. python ----元组方法以及修改细节
  12. Ubuntu 16.04 安装Matlab R2015b
  13. CSS中常见中文字体的英文名称
  14. java:换行符“\n”
  15. 机械工程c语言第一学期考试题,科学出版社机械工程图学习题集1~10章答案.ppt
  16. 【Blender报错记录】Bone Heat Weighting: failed to find solution for one or more bones
  17. 我的理想计算机系100字,我的理想作文100字(通用12篇)
  18. logoff user in window 2008
  19. 2048java设计报告_2048设计报告.doc
  20. Metasploit入侵win7系统

热门文章

  1. Win 8系统查看无线网络密码
  2. linux 组软raid0,配置Linux软RAID0
  3. linux 软raid恢复,Linux软RAID部署系统分区之恢复攻略
  4. linux创建新目录的命令,mkdir命令:在Linux服务器中创建新目录
  5. linux用cat创建文件怎么打开,【Linux】使用cat命令创建文本文件
  6. Stale Read 功能的使用场景
  7. JAVA修改dmp版本号12g到11,又见bug,动态调整SGA参数导致数据库crash
  8. Linux重定向与管道符
  9. 关于支持多个片选的大容量NANDFLASH简记
  10. 塔望食业洞察|烘焙行业市场规模、消费研究、发展趋势及思考