PHP7.3/7.4如何单行判断对象存在并获取其属性?
PHP 7.3/7.4 中实现类似 Nullsafe 运算符的写法
PHP 7.3 和 7.4 不支持 ?-> 这种 Nullsafe 运算符——这个语法是在 PHP 8.0 才正式引入的,所以你在这两个版本里用$object?->property必然会报错。
如果要在 7.3/7.4 里实现“单行判断对象是否存在并获取属性”的需求,可以用以下几种替代方案:
三元运算符结合 null 合并
先判断对象是否存在,再用 null 合并运算符处理属性不存在的情况:echo isset($object) ? $object->property ?? null : null;要是你能确定对象存在时属性一定有值,也可以简化成:
echo isset($object) ? $object->property : null;针对数组的简化写法
你例子里提到数组['property' => 'success']的情况,直接用 null 合并要先确保数组本身非空,否则会报错:echo is_array($object) ? $object['property'] ?? null : null;封装工具函数(复用性更高)
如果需要频繁做这类判断,封装个函数会更方便,还能同时支持对象和数组:function getSafeValue($data, $key) { if ($data === null) return null; if (is_object($data)) return $data->$key ?? null; if (is_array($data)) return $data[$key] ?? null; return null; } // 使用示例 echo getSafeValue($object, 'property');
当然,最省心的解决办法是升级到 PHP 8.0 及以上版本,这样就能直接用$object?->property这种简洁的 Nullsafe 语法了。
内容的提问来源于stack exchange,提问作者Ondra Lohniský
相关产品推荐
相关产品推荐

