PHP嵌套stdClass对象属性读取输出与空值校验方法(含JSON编解码)
错误原因
$this->raw->params是stdClass对象而非数组,你使用['0']数组下标访问不存在的数组层,属于类型调用错误,所以触发非对象属性访问、空值数组偏移的报错。- 从你提供的
var_dump结构来看,respCode_desc是params对象的直接公有属性,不需要加数组下标即可访问。
实现代码
直接修改Order类的message()方法即可实现非空判断和 fallback 逻辑:
public function message() { // 兼容低版本PHP的写法 if (isset($this->raw->params) && !empty($this->raw->params->respCode_desc)) { return $this->raw->params->respCode_desc; } return $this->raw->actionCodeDescription; }
如果你的PHP版本≥7.0,可以用null合并运算符简化写法:
public function message() { return $this->raw->params->respCode_desc ?? $this->raw->actionCodeDescription; }
如果需要兜底不存在actionCodeDescription的极端场景,可以再加一层默认值:
public function message() { return $this->raw->params->respCode_desc ?? $this->raw->actionCodeDescription ?? '未知错误'; }
修改后直接调用echo $order->message();就可以按需求输出对应值。
内容的提问来源于stack exchange,提问作者zakiblacki
相关产品推荐
相关产品推荐

