将嵌套的对象链存储在变量中

剧烈的

所以可以说我有一个这样的物体

 {
      "status": "AlreadyVerified"
 }

我想将propert键存储在变量中,这样我就可以使用该变量访问属性

$key = 'status';
echo $object->$key

但是如果我有一个嵌套的对象怎么办

{
  "extra_info": {#305 ▼
    +"status": "AlreadyVerified"
  }
}

这行不通

$key = 'extra_info->status';
echo $object->$key

如何将嵌套的对象链存储在变量中,以便可以使用该变量访问其属性?

最好是某种既适用于嵌套对象又适用于平面对象的方法(我想这就是所谓的!)

布雷维斯

可以通过如下的写辅助函数来实现:

function deepFind($o, $key) {
    $key = explode('->', $key);
    $value = $o;    
    foreach ($key as $i=>$k) {
        if (is_object($value) && isset($value->{$k})) {
            $value = $value->{$k};
        } elseif (is_array($value) && isset($value[$k])) {
            $value = $value[$k];
        } elseif ($i == count($key) - 1) {
            $value = null;
        }
    }
    return $value;
}

用法:

$o = (object)[
  "extra_info" => (object)[
    "status" => "AlreadyVerified"
  ]
];

echo deepFind($o, 'extra_info->status');

在线演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章