当前位置: 首页 > 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. 接口的优…...

Shell脚本新手必看:6种方法彻底解决Undefined Variable报错(附代码示例)

Shell脚本变量报错终极指南&#xff1a;从根源解决Undefined Variable问题 在Linux系统管理和自动化运维中&#xff0c;Shell脚本是不可或缺的工具。但许多初学者在编写脚本时&#xff0c;经常会遇到"Undefined Variable"这类看似简单却令人头疼的报错。这种错误不仅…...

零基础玩转OpenClaw:Qwen3-32B镜像快速入门5个示例

零基础玩转OpenClaw&#xff1a;Qwen3-32B镜像快速入门5个示例 1. 为什么选择OpenClawQwen3-32B组合&#xff1f; 去年冬天&#xff0c;当我第一次看到同事用自然语言命令电脑自动整理桌面文件时&#xff0c;仿佛打开了新世界的大门。经过两周的折腾&#xff0c;我终于在本地…...

MusePublic效果展示:多主体构图稳定性测试——双人/三人场景自然互动生成

MusePublic效果展示&#xff1a;多主体构图稳定性测试——双人/三人场景自然互动生成 1. 引言&#xff1a;当AI学会描绘“关系” 在AI绘画的世界里&#xff0c;生成一个栩栩如生的人物已经不再是难事。但当画面中需要同时出现两个、甚至三个人物&#xff0c;并且他们之间要有…...

收藏!阿里放大招成立ATH事业群,AI月薪6W+,小白/程序员入局正当时

近日&#xff0c;据行业网友爆料&#xff0c;阿里近期迎来AI领域重大动作——正式组建Alibaba Token Hub&#xff08;简称ATH&#xff09;事业群&#xff0c;由集团CEO吴某铭亲自挂帅带队&#xff0c;其核心战略目标十分明确&#xff0c;浓缩为一句话就是&#xff1a;创造Token…...

终极指南:如何灵活配置flamegraph性能分析参数生成自定义火焰图

终极指南&#xff1a;如何灵活配置flamegraph性能分析参数生成自定义火焰图 【免费下载链接】flamegraph Easy flamegraphs for Rust projects and everything else, without Perl or pipes <3 项目地址: https://gitcode.com/gh_mirrors/fla/flamegraph flamegraph是…...

因果模型评估完全手册:Python指标与验证方法详解

因果模型评估完全手册&#xff1a;Python指标与验证方法详解 【免费下载链接】python-causality-handbook 项目地址: https://gitcode.com/gh_mirrors/py/python-causality-handbook 在数据分析和决策科学领域&#xff0c;因果推断模型的评估是确保模型可靠性与实用性的…...

如何构建现代搜索应用:ReactiveSearch与GraphQL的终极集成指南

如何构建现代搜索应用&#xff1a;ReactiveSearch与GraphQL的终极集成指南 【免费下载链接】reactivesearch Search UI components for React and Vue 项目地址: https://gitcode.com/gh_mirrors/re/reactivesearch ReactiveSearch是一个强大的React和Vue搜索UI组件库&a…...

Git子模块克隆总失败?试试这个国内镜像源+分步克隆的保姆级方案

Git子模块克隆失败&#xff1f;国内镜像源分步克隆的终极解决方案 每次看到终端里那个刺眼的"fatal: clone of https://github.com/xxx/yyy.git into submodule path failed"错误提示&#xff0c;我都忍不住想砸键盘。作为一个常年需要从GitHub拉取各种开源项目的开发…...

Balena Etcher:三步完成系统镜像烧录,告别复杂命令的困扰

Balena Etcher&#xff1a;三步完成系统镜像烧录&#xff0c;告别复杂命令的困扰 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾经因为需要制作系统启动…...

lite-avatar形象库部署教程:GPU共享模式下多租户数字人服务隔离方案

lite-avatar形象库部署教程&#xff1a;GPU共享模式下多租户数字人服务隔离方案 1. 项目概述 lite-avatar形象库是一个专业的数字人形象资产管理平台&#xff0c;基于HumanAIGC-Engineering/LiteAvatarGallery构建。这个库提供了150经过预训练的2D数字人形象&#xff0c;专门…...