PHP中如何使用空安全操作符替代传统NULL检查?
PHP空安全操作符替代传统NULL检查的方案
首先要明确:isset()和is_null()目前没有被PHP官方列入弃用计划,这两个函数仍是PHP中检查变量存在性和null值的常用工具,不用过度担心它们的可用性。不过如果想用PHP 8引入的空安全相关语法来简化代码、避免Notice错误,这里给你对应场景的替代方案:
你的原始代码if($_POST['submit'] == NULL){...}存在一个隐患:如果$_POST数组中没有submit这个键,直接访问会触发E_NOTICE级别的错误。而空安全相关语法可以同时处理「键不存在」和「值为null」两种情况,且不会报错。
方案1:使用null合并操作符??
这是最适合你当前场景的写法,代码如下:
if ($_POST['submit'] ?? null === null) { // 这里写你的处理逻辑 }
$_POST['submit'] ?? null的作用是:如果$_POST中存在submit键,就取它的值;如果不存在,直接返回null。之后和null做全等比较,就能同时覆盖「键不存在」和「值为null」两种情况,完美替代原来的== NULL、!isset()或is_null()的检查,还能避免Notice错误。
补充:空安全访问操作符?->的适用场景
空安全操作符?->主要用于链式访问对象属性/方法或数组元素时,避免中间值为null导致的错误。比如如果你的场景是嵌套数组,比如$_POST['form']['submit'],可以这样写:
if ($_POST['form']?->['submit'] ?? null === null) { // 处理逻辑 }
这里$_POST['form']?->['submit']的意思是:如果$_POST['form']存在且不为null,就访问它的submit键;否则直接返回null,再结合?? null就完成了安全检查。
内容的提问来源于stack exchange,提问作者Evan Drury
相关产品推荐
相关产品推荐

