当前位置: 首页 > news >正文

彻底搞懂 PHP 运算符 ?: 和 ??

文章目录

  • 快速掌握
    • ?: 短三元运算符
    • ?? NULL 合并运算符
  • 附上官方文档查阅方式

快速掌握

?: 短三元运算符

?: 称之为短三元运算符,它是我们熟悉的三元运算符(也叫做条件运算符)的一种特殊写法,也就是省略了三元运算符中间的部分。

  • 复习一下三元表达式的语法:
    (expr1) ? (expr2) : (expr3)
    在 expr1 求值为 true 时的值为 expr2,在 expr1 求值为 false 时的值为 expr3。

    <?php
    // 三元运算符的例子
    $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];// 以上等同于以下的  if/else 语句
    if (empty($_POST['action'])) {$action = 'default';
    } else {$action = $_POST['action'];
    }
    ?>
    
  • 省略三元运算符中间部分的语法:
    expr1 ?: expr3
    如果 expr1 求值为 true 时返回 expr1 的结果,否则返回 expr3(expr1 在这里仅执行一次)。

    <?php
    echo 0 ?: 1 ?: 2 ?: 3, PHP_EOL; //1
    echo 0 ?: 0 ?: 2 ?: 3, PHP_EOL; //2
    echo 0 ?: 0 ?: 0 ?: 3, PHP_EOL; //3
    ?>
    

?? NULL 合并运算符

?? 语法:(expr1) ?? (expr2)
当 expr1 为 null,表达式 (expr1) ?? (expr2) 等同于 expr2,否则为 expr1。

下面是设置默认值的示例:

<?php
// NULL 合并运算符的例子
$action = $_POST['action'] ?? 'default';// 以上例子等同于于以下 if/else 语句
if (isset($_POST['action'])) {$action = $_POST['action'];
} else {$action = 'default';
}
?>
  • null 合并运算符的优先级较低。
    这意味着如果将它与其它运算符(比如字符串链接或者算术运算符)混合使用,可能需要括号。请看下面的示例:

    <?php
    // $name 未定义,引发警告。
    print 'Mr. ' . $name ?? 'Anonymous';// 打印 "Mr. Anonymous"
    print 'Mr. ' . ($name ?? 'Anonymous');
    ?>
    
  • 嵌套 NULL 合并运算符的示例:

    <?php$foo = null;
    $bar = null;
    $baz = 1;
    $qux = 2;echo $foo ?? $bar ?? $baz ?? $qux; // 输出 1?>
    

附上官方文档查阅方式

  • 在线文档链接
    php.net 比较运算符,打开网页后 Ctrl+F搜索 ?: 或者 ??
  • 离线文档
    依次打开目录节点:目录 -> PHP 手册 -> 语言参考 -> 运算符 -> 比较运算符,同样Ctrl+F搜索 ?: 或者 ??

相关文章:

彻底搞懂 PHP 运算符 ?: 和 ??

文章目录 快速掌握?: 短三元运算符?? NULL 合并运算符 附上官方文档查阅方式 快速掌握 ?: 短三元运算符 ?: 称之为短三元运算符&#xff0c;它是我们熟悉的三元运算符&#xff08;也叫做条件运算符&#xff09;的一种特殊写法&#xff0c;也就是省略了三元运算符中间的部…...

贝叶斯人工智能大脑与 ChatGPT

文章目录 一、前言二、主要内容 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 论文地址&#xff1a;https://arxiv.org/abs/2308.14732 这篇论文旨在研究 Chat Generative Pre-trained Transformer&#xff08;ChatGPT&#xff09;在贝叶斯…...

适应高速率网络设备的-2.5G/5G/10G网络变压器/网络滤波器介绍

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;在高速发展的互联网/物联网时代&#xff0c;为满足高网速的网络数据传输需求&#xff0c;网络设备在制造中也要选用合适的网络变压器/滤波器产品&#xff0c;有哪些可供选择的高速率网络变压器产品也是广大采购人员…...

「Redis」1. 数据类型的底层实现

前言&#xff1a;在这篇博文中&#xff0c;我们将简单总结在面试中怎么回答Redis数据类型的底层实现。 因为面试时间就那么点&#xff0c;言简意赅的描述自己会的知识显得尤为重要‼️ 文章目录 0.1. String 的底层实现原理0.2. 列表的底层实现原理0.3. 字典的底层实现原理0.4.…...

Win11共享文件,能发现主机但无法访问,提示找不到网络路径

加密长度选择如下&#xff1a; 参考以下链接&#xff1a; Redirectinghttps://answers.microsoft.com/zh-hans/windows/forum/all/win11%E8%AE%BE%E7%BD%AE%E6%96%87%E4%BB%B6%E5%A4%B9/554343a9-d963-449a-aa59-ce1e6f7c8982?tabAllReplies#tabs...

ROS中使用Navigation报错信息

在ROS中使用遇到了几个Navigation报错信息&#xff0c;在这里进行下记录&#xff1a; [ WARN] [1688134727.429227824]: The origin for the sensor at (7.35, 13.12) is out of map bounds. So, the costmap cannot raytrace for it. 解决办法&#xff1a; [ WARN] [16881…...

three.js(六):自适应设备分辨率

自适应设备分辨率 当今大多数的PC端和移动端显示器都是HD-DPI显示器。HD-DPI 是High Definition-Dots Per Inch 的简称&#xff0c;意思是高分辨率显示器。不同设备的显示器的分辨率是不一样的。 以上图中的iPhone6/7/8 为例&#xff1a;375*667 代表的手机的屏幕的物理尺寸&a…...

Kubernetes对象深入学习之五:TypeMeta无效之谜

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《Kubernetes对象深入学习之五》系列的第五篇&#xff0c;从前文的分析也能看出&#xff0c;代表对象类型的schema.ObjectKind&#xff0c;于…...

Gitlab设置中文

1. 打开设置 2.选择首选项Preferences 3. 下滑选择本地化选项Localization&#xff0c;设置简体中文&#xff0c;然后保存更改save changes。刷新网页即可。...

【微服务部署】05-安全:强制HTTPS

文章目录 安全 : 强制HTTPS的两种方式1. Ingress配置重定向2. 应用程序配置3. Ingress配置4. 应用程序配置代码总结 安全 : 强制HTTPS的两种方式 互联网发展中&#xff0c;安全是非常重要的&#xff0c;由其是现在HTTPS非常普及的情况下&#xff0c;应用程序在公网上一般都会被…...

Config:服务端连接Git配置

创建子模块 Pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org…...

c++学习 之 类和对象 public , protected ,private

前言 在C中&#xff0c;访问控制修饰符&#xff08;Access Control Modifiers&#xff09;用于控制类的成员&#xff08;成员变量和成员函数&#xff09;的访问权限。这些修饰符分为三种&#xff1a;public、protected和private。它们定义了成员可以在何处访问&#xff0c;具体…...

ECharts图表动态修改series显示隐藏

文章目录 1、前言2、思路3、实现 1、前言 最近做的大数据平台&#xff0c;里面很多部分用到了ECharts&#xff0c;其中有个功能&#xff0c;要求将图表分组&#xff0c;根据用户选择的组&#xff0c;来确定ECharts要显示那些线条和柱子&#xff0c;也就是动态的显示option.seri…...

云服务器(Centos7系统)配置JAVA+mysql+tomcat 环境

文章主要内容来源云服务器&#xff08;Centos7系统&#xff09;部署javaweb项目&#xff08;二&#xff09;配置JAVAmysqltomcat 环境_man_zuo的博客-CSDN博客 模仿途中遇到的问题 连接无效 有时连接无法下载&#xff0c;可能是过期了&#xff0c;将其更换为官网给的下载连接即…...

【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(四)

文章目录 一、JTA (Joint Track Auto)二、AVD (Active Vision Dataset)三、ExDark (Exclusively Dark Image Dataset)四、InteriorNet五、ScanRefer Dataset六、FlickrLogos-32七、SIXray八、Clear Weather (DENSE)九、DVQA (Data Visualizations via Question Answering)十、M…...

Dockerfile制作镜像与搭建LAMP环境

一.编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff08;3&#xff…...

Linux系统中查看端口的方法

一、使用netstat命令 netstat命令是一种非常实用的命令&#xff0c;可以用来显示网络连接、路由表、网络接口和网络统计信息等。它还可以用来显示系统中正在监听的端口。要查看端口&#xff0c;只需在终端中输入以下命令&#xff1a; netstat -tuln 这个命令的意思是列出所有…...

java mysql传入string数组返回string数组的简单写法

一、前言 最近有个需求&#xff0c;需要一个传入string数组返回string数组的sql逻辑。 懒得封装成javabean了&#xff0c;于是就写了一个简单的样例&#xff0c;总结下。 二、代码 1.mapper.java&#xff0c;可以这样写&#xff1a; public interface MyMapper {String[] …...

【PHP】PHP基本语法

1、PHP标记 当解析一个文件时&#xff0c;PHP 会寻找起始和结束标记&#xff0c;也就是 <?php 和 ?>&#xff0c;告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去&#xff0c;而任何起始和结束标记之外的部分都会被 PHP…...

SystemVerilog interface详细介绍

1. Interface概念 System Verilog中引入了接口定义&#xff0c;接口与module 等价的定义&#xff0c;是要在其他的接口、module中直接定义&#xff0c;不能写在块语句中&#xff0c;跟class是不同的。接口是将一组线捆绑起来&#xff0c;可以将接口传递给module。 2. 接口的优…...

应届生编程面试,这8个加分项,让你在面试官面前脱颖而出

文章目录前言一、基础扎实&#xff1a;别死背八股&#xff0c;要懂“为什么”1. 经典技术永不过时&#xff0c;别盲目追新2. 把“是什么”变成“为什么”&#xff0c;才是真的懂二、项目经历&#xff1a;不说技术栈&#xff0c;说“解决了什么问题”1. 用数据说话&#xff0c;量…...

3步高效解决方案:Calibre电子书元数据自动化管理

3步高效解决方案&#xff1a;Calibre电子书元数据自动化管理 【免费下载链接】calibre-douban Calibre new douban metadata source plugin. Douban no longer provides book APIs to the public, so it can only use web crawling to obtain data. This is a calibre Douban p…...

抖音无水印批量下载终极指南:3分钟学会免费下载视频、音乐和直播

抖音无水印批量下载终极指南&#xff1a;3分钟学会免费下载视频、音乐和直播 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fall…...

遥感在生态系统碳储量、碳收支、碳循环、碳汇稳定性预警以及人为源排放反演等应用

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点&#xff0c;已成为监测全球碳盘查的核心技术手段&#xff0c;卫星遥感也正在成为新一代、国际认可的全球碳核查业务化方法。本此目的就是梳理碳中和及碳盘点对卫星遥感的最新现实需求&#xff0c;系统总结遥感技术在生态…...

The Incredible PyTorch终极指南:探索全球开发者贡献者墙的完整资源宝库

The Incredible PyTorch终极指南&#xff1a;探索全球开发者贡献者墙的完整资源宝库 【免费下载链接】the-incredible-pytorch The Incredible PyTorch: a curated list of tutorials, papers, projects, communities and more relating to PyTorch. 项目地址: https://gitc…...

Windows安卓应用安装新方案:告别模拟器,APK安装器如何实现原生级体验?

Windows安卓应用安装新方案&#xff1a;告别模拟器&#xff0c;APK安装器如何实现原生级体验&#xff1f; 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想在…...

Pytorch图像去噪实战(八十五):审计日志实战,记录用户行为、模型调用和敏感操作

Pytorch图像去噪实战(八十五):审计日志实战,记录用户行为、模型调用和敏感操作 一、问题场景:出了问题,却不知道是谁在什么时候做了什么 图像去噪服务进入平台化后,会出现大量用户行为: 用户上传图片 用户创建异步任务 用户下载结果 用户调用高质量模型 管理员修改套餐…...

在 Taotoken 模型广场中根据任务需求与预算进行模型选型的实践

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在 Taotoken 模型广场中根据任务需求与预算进行模型选型的实践 对于开发者而言&#xff0c;面对众多大模型 API&#xff0c;如何选…...

sklearn交叉验证提速秘籍:除了n_jobs=-1,cross_val_score里pre_dispatch和verbose怎么用?

sklearn交叉验证提速实战&#xff1a;参数调优与资源管理技巧 当数据集规模膨胀或模型复杂度攀升时&#xff0c;交叉验证可能从几分钟的等待变成数小时的煎熬。许多工程师习惯性设置n_jobs-1后便放任不管&#xff0c;直到内存溢出或日志淹没控制台才手忙脚乱。本文将揭示cross_…...

Qt Creator远程调试实战:当你的开发机是Win10,测试机是Win7时该怎么办?

Qt Creator跨Windows版本远程调试实战&#xff1a;Win10到Win7的完整解决方案 当开发环境与测试环境存在Windows版本差异时&#xff0c;Qt项目的远程调试往往会遇到各种"玄学"问题。本文将针对Win10开发机与Win7测试机的典型组合&#xff0c;深入解析CDB远程调试的完…...