• php的三元运算符


    三元运算,即第一个表达式作为判断条件,在后面两个表达式中选择一个执行。若判断成立,则执行第二个表达式,否则执行第三个表达式。查资料时候,看到好多网友都说的不太全面或者不清不楚,所以这里整理并简单记录一波

    整理如下

    1. (expr1)?(expr2):(expr3);
    => 表达式1 ? 表达式2 : 表达式3
    => 如果条件“expr1”成立,则返回“expr2”,否则返回“expr3”。

    $number = 100;
    $msg = $number > 0 ? '大于0' : '不大于0';
    echo $msg;//大于0
    

    2. (expr1)?:(expr2);
    => 这个是php5.3开始才有的功能
    => 如果条件“expr1”成立,则返回“expr1”,否则“expr2”。

    <?php
    $number = 100;
    $msg = $number ?: '不大于0';
    echo $msg;//100
    

    3. (expr1)??(expr2);
    => 这个是php7开始才有的功能
    => 又叫空合并运算符,相当于 isset(expr1) ? expr1 : expr2;
    => 如果条件“isset(expr1)”成立,则执行语句“expr1”,否则执行“expr2”。
    => 链式:(expr1)?? (expr2) ?? (expr3);

    特别注意第3点

    它只能判断是否为null,而0/false/空数组都认为有值的!

    <?php
    // 一般形式
    $msg1 = $number ?? '未设置该变量';
    echo $msg1;//'未设置该变量'
    
    $number = 100;
    $msg2 = $number ?? '未设置该变量';
    echo $msg2;//100
    
    // 链式
    $msg3 = $number1 ?? $number2 ?? '未设置该变量';
    echo $msg3;//未设置该变量 //没有赋值都是null,所以返回'未设置该变量'
    
    $number1 = 100;//即使是0/false/空数组都认为有值的!
    $msg3 = $number1 ?? $number2 ?? '未设置该变量';
    echo $msg3;//100 //执行到第一步就得到结果,所以返回100
    
  • 相关阅读:
    一文了解快排的各种形式和坑
    逆序对的数量
    __type_traits 技法
    Traits 编程技法
    一个简单的内存管理器
    「ZooKeeper」概述
    「MySQL」explain
    「MySQL」InnoDB加锁情况
    「MySQL45讲」个人总结
    「MySQL45讲」1-45讲
  • 原文地址:https://www.cnblogs.com/xuduan/p/13925267.html
Copyright © 2020-2023  润新知