【问题标题】:How to echo nested stdClass PHP (json encode decode)如何回显嵌套的 stdClass PHP(json 编码解码)
【发布时间】:2021-12-13 12:28:21
【问题描述】:

我有以下标准类对象数组:

var_dump($order);

array (size=2)
'raw' => 
object(stdClass)[6]
  public 'actionCodeDescription' => string 'processing.error.203' (length=20)
  public 'params' => 
    object(stdClass)[7]
      public 'respCode_desc' => string 'Transaction rejected' (length=83)

我正在尝试检索并显示“params' {'respCode_desc : "transact rejected'}

例如,如果我要求

actionCodeDescription我只需要echo $order->message();

    public function message()
{
    return $this->raw->actionCodeDescription;
}

我尝试过的:$this->raw->params['0']->respCode_desc; 它没有用 我会得到

试图获取非对象的属性“respCode_desc”或
尝试访问 null 类型值的数组偏移量

任何想法我做错了什么

我如何检查respCode_desc 是否不为空以便显示 actionCodeDescription?

这是我的代码

class Order
{
public $raw;

function __construct($obj)
{
    $this->raw = $obj;
}
    public function __toString()
{
    return json_encode($this->raw, JSON_PRETTY_PRINT);
}

【问题讨论】:

  • “它不起作用” - 这是什么意思?会发生什么?
  • 我不明白底部的 json_encode 调用与此有什么关系,或者您将对象转换为数组的顶部代码;但你的错误是 params 不是数组,所以没有 params['0']
  • 为什么params['0'],你的var_dump表明params是一个stdClassobject
  • 是的抱歉错误的表述它是stdClass对象,我不是为了获取特定的对象键值而转换数组

标签: php arrays json nested stdclass


【解决方案1】:

已解决

 <?php echo $order->getCibMessage(); ?>

function getCibMessage()
{
    $obj = $this->raw;

    if (isset($obj->params) && isset($obj->params->respCode_desc)) {
        return  $obj->params->respCode_desc;
    } else {
        return $obj->actionCodeDescription;
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多