您的当前位置:首页>全部文章>文章详情

【PHP】php中?:与??运算符有什么不同?

CrazyPanda发表于:2024-08-01 09:41:32浏览:279次TAG:

在PHP 7中,有两个类似的语法结构:“??”和“?:”,它们都是用于处理条件判断和返回值的运算符。尽管它们看起来相似,但它们的作用和用法有一些区别。

"?:"是三目运算符,语法格式为:$result = $test ? $test : ′ ′ ; 意思就是当test存在时(即empty($test)为false),则返回它本身,否则返回空(当然也可以返回其他,这里的空只是举个例子)。

"??"是php7新引入的语法,它相当于是isset($result[‘key’]) ? $result[‘key’] : ‘’;意思是若这个key的变量存在且值不为NULL,否则返回空。


举例说明

$a='';$b=0;$c='0';$d=array();$e=null;
var_dump($a?:1); // 1
var_dump($a??1); // ''
var_dump($b?:1); // 1
var_dump($b??1); // 0
var_dump($c?:1); // 1
var_dump($c??1); // "0"
var_dump($d?:1); // 1
var_dump($d??1); // array()
var_dump($e?:1); // 1
var_dump($e??1); // 1

可以看出

$a的值为:0,'',array(),'0'时,$a ?: 1得到的结果都是1;$a ?? 1得到的结果都是$a,效果相当于!empty($a) ? $a : 1;

$a的值为:null时,$a ?: 1与$a ?? 1得到的结果都是1,相当于 isset($a) ? $a : 1

需要注意的是,“??”运算符只能用于判断是否为 null,而“?:”运算符可以用于任何条件的判断。

猜你喜欢

【PHP】PHP中的ob系列函数
在PHP中,ob系列函数,又称输出控制函数,可用于缓冲输出控制。1. ob_start()功能:打开一个输出缓冲区,所有的输出内容不再直接输出到浏览器,而是保存在输出缓冲区里面。返回值:布尔值。2. ob_get_clean()功能:获取当前缓冲区的内容并删除(关闭)当前输出缓冲区。返回值:返回输出缓冲区的内容,并结束输出缓冲区;如果输出缓冲区不是活跃的,返回false。ob_get_clean() 实质上是一起执行了 ob_get_contents() 和 ob_end_clean() 。3.
发表于:2024-07-31 浏览:238 TAG:
【PHP】删除文件为什么会失败
php删除文件失败的原因:文件在删除时仍然被其他线程或进程占用。解决方法:首先手动释放文件对象,避免因为被其他线程或进程占用而导致删除失败;然后利用unlink()函数删除文件即可。原因分析:文件仍然被其他进程占用。所以我们最好释放下文件对象,避免因为被其他线程或进程占用而导致删除失败。(推荐教程:php图文教程)unlink() 函数删除文件。如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。(视频教程推荐:php视频教程)代码实现:1234567891011121314
发表于:2023-12-06 浏览:596 TAG:
【PHP】在vscode中要用php需安装什么
在Vscode中使用Php需安装什么?随着Php的使用范围逐渐扩大,越来越多的人开始在Vscode中使用Php进行开发。但是,要在Vscode中使用Php需要安装一些必要的扩展和插件。本篇文章将为大家讲解在Vscode中使用Php需要安装的扩展和插件。PHP Extension PackPHP Extension Pack是由Microsoft开发的一个扩展包,其中包括了一些必要的Php扩展,比如Php Debug、Php IntelliSense、Php DocBlocker等。使用
发表于:2023-12-19 浏览:341 TAG:
【PHP】thinkphp5.1+workman+jsonRpc
1.下载jsonRpc包放到vendor目录下  2.启动文件  3.启动效果:启动命令php allserver.php start  4.RpcClient Rpc客户端+RpcClient Rpc服务端 访问:http://localhost/product/public/index/RpcTest/rpctest 报错:stream_socket_client(): unable to connect to tcp://127.0.0.1:2015 (由于目标计算机积极拒绝,无法连接。
发表于:2024-05-27 浏览:344 TAG:
【PHP】PHP依赖注入
PHP依赖注入(Dependency Injection,DI)是一种软件设计模式,可以减少代码耦合,使得类鱼类之间的依赖关系更加清晰。以下是一个简单的PHP依赖注入的例子:<?php   interface StorageInterface {     public function store($data); }   class DatabaseStorage im
发表于:2024-06-17 浏览:235 TAG:
【PHP】PHP8.0 match函数
`match` 表达式是 PHP 8.0 引入的一个新的控制结构,它提供了一种简洁且更强大的方式来进行条件匹配。与 `switch` 语句相比,`match` 表达式具有以下优势:返回值:match 是一个表达式,它会返回一个值。严格比较:match 使用严格比较(===),而 switch 使用宽松比较(==)。单行语法:每个条件都必须在同一行内完成。默认值:可以使用 _ 作为默认匹配情况。基本语法$result = match ($value) { &
发表于:2024-08-07 浏览:264 TAG:
【PHP】ES在MySQL、PHP中的使用
                                                       ES简介一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。全文检索是指
发表于:2024-06-15 浏览:217 TAG:
【PHP】php哪些函数可以用来去幂方值
hp可以用来去幂方值的函数有pow函数、双星号、exp函数、sqrt函数和log函数等。详细介绍:1、pow函数用于计算x的y次幂,x是底数,y是指数;2、双星号是幂运算符,用于计算一个数的幂;3、exp函数用于计算以e为底的x次幂,e是自然对数的底数,x是指数;4、sqrt函数用于计算一个数的平方根,x是计算平方根的数;5、log函数用于计算以指定底数为底的对数。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。在PHP中,可以使用一些内置的函数来进行幂运算
发表于:2024-03-15 浏览:295 TAG:
【PHP】PHP防止XSS攻击的主流方法
概述跨站点脚本 (XSS) 是一种严重的安全漏洞,允许恶意行为者将恶意脚本引入网站,使毫无戒心的访问者处于危险之中。使用 XSS,攻击者可以在受害者的 Web 浏览器中执行任意代码,可能导致敏感数据被盗、未经授权的访问或网站污损。本文旨在深入探讨 XSS 攻击的主要形式,阐明其根本原因,探索 XSS 利用的潜在后果,并深入了解防止 PHP 中 XSS 攻击的有效措施。介绍当恶意行为者成功将有害脚本插入受信任的网站时,就会发生跨站脚本 (XSS) 攻击。这些受感染的网站在不知不
发表于:2024-07-14 浏览:242 TAG: #php
【PHP】PHP8.0中的异步函数
hp8.0是php语言的最新版本,在其中新增了一些非常重要的功能,其中最为突出的一项就是异步函数的支持。本文将着重介绍php8.0中的异步函数,包括异步编程的概念、优点以及在php8.0中的具体应用。异步编程概念在传统的编程方式中,程序是通过按照代码的顺序依次执行来完成任务的。也就是说,如果一个操作需要等待另一个操作完成之后才能继续执行,那么程序就必须一直等待,直到该操作完成。这种方式也称为同步编程。而异步编程则是一种不同的编程方式。在异步编程中,程序不需要等待某个操作完成之后才能继续执行,而
发表于:2024-07-29 浏览:246 TAG: