美文网首页
PHP "三元运算符"简写

PHP "三元运算符"简写

作者: patiencing | 来源:发表于2017-04-30 20:55 被阅读0次

缘起

今天阅读 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.
  • 建议不要嵌套使用"三元运算符", 因为很难理解.

跳出"三元运算符"

StackOverflow 中有个讨论 Multiple conditions in the ternary operator safe?

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

$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 5.3 空合并运算符(??)php 7

  • PHP "三元运算符"简写

    缘起 今天阅读 Laravel 的源码时发现"三元运算符"的一种简洁写法: ?: 是写在一起的! "三元运算符"是...

  • php三元运算符简述

    php的三元运算符有几种写法: $arr = [1,2]; 1、?? 运算符(合并运算符) 此运算符是php7加...

  • 2018-02-05Java与C相似处

    运算符意义相同。 简写的C语言中条件运算符 条件运算符( ? :)也称为 “三元运算符”。 语法形式:布尔表达式...

  • 第5章 PHP中常用的运算符

    什么是运算符 PHP中的运算符有哪些?PHP运算符一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算...

  • 常用的JavaScript简写技巧

    JavaScript 的简写技巧 变量声明 多个变量赋值 三元运算符 赋默认值 与运算符 (&&) 交换两个变量 ...

  • 2019-07-23

    php支持以下类型的运算符。算术运算符,比较运算符,逻辑(或关系)运算符,赋值运算符有条件(或三元)运算符.

  • Learning PHP Day1(运算符、数组)

    1. 运算符 PHP 中的运算符分为:算术运算符、递增/递减运算符、比较运算符、逻辑运算符、数组运算符、三元运算符...

  • php运算符

    算数运算符 递增/递减运算符 比较运算符 逻辑运算符 三元运算符 组合比较符(PHP7+) 位运算符 运算符优先级

  • 入门篇/Chapter 5

    运算符 运算符是告诉PHP做相关运算的标识符号。一般分为算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符...

网友评论

      本文标题:PHP "三元运算符"简写

      本文链接:https://www.haomeiwen.com/subject/leixtxtx.html