一只大脸猫博客主要分享PHP开发技巧、Web前端技术、网站优化、网站排名、修电脑、心灵鸡汤等一些生活中遇到的事、道理和技巧。分享更多知识给身边的朋友。
一只大脸猫博客主要分享PHP开发技巧、Web前端技术、网站优化、网站排名、修电脑、心灵鸡汤等一些生活中遇到的事、道理和技巧。分享更多知识给身边的朋友。

PHP 7 新特性二 Null coalescing operator(空合并运算符)


在PHP 7中,引入了一个新的特性,即空合并运算符(??)。它用于与isset()函数一起替换三元运算。该空如果它存在,而不是空合并运算符返回第一个操作数; 否则返回第二个操作数。

PHP 7中引进了空合并运算符(??),空值合并运算符,英文名叫the null coalescing operator,符号为两个英文问号写作(??),语法形如 $a = $b ?? $c; 意思是如果变量 $b 已经定义,并且没有被注销删除,并且不为null, 就将 $b 的值赋给变量 $a, 否则将变量 $c 的值赋给变量 $a.

$a = $b ?? $c; 相当三元运算的 $a = isSet($b) ? $b : $c;

或者条件结构运算

注意:PHP null合并运算符??前面的变量不存在时不会报错,但如果??后面的变量不存在,则会触发E_NOTICE级别的错误。PHP可空合并运算符的“空”特指null,不是其他能够让empty()返回true的false, '', array()等变量值。如果一个变量$v被赋值为null, isSet($v)返回false, 所以上例不需要判断$b和null的关系。

<?php
   // //获取$ _GET ['user']的值并返回'not passed'
   // 判断有没有传递用户名
   $username = $_GET['username'] ?? 'not passed';
   var_dump($username);
   echo "<br/>";

   // 使用三元运算符的等效代码
   $username = isset($_GET['username']) ? $_GET['username'] : 'not passed';
   var_dump($username);
   echo "<br/>";
   // 使用"??"链接使用
   $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed';
   var_dump($username);
   //它产生以下浏览器输出 -

    //not passed
    //not passed
    //not passed

使用空合并运算有利于代码简介等等功效。


PHP 7 新特性二 Null coalescing operator(空合并运算符):http://www.yzdlm.com/php/10.html

作者:吕宗国 分类: PHP博客


上一篇:PHP 7新特性一 Short closures 短闭包 下一篇:PHP 7 新特性三 Traits

评论


乖,登录后才可以留言!
QQ一键登录
Top