首页 > 解决方案 > 将嵌套对象链存储在变量中

问题描述

所以可以说我有一个像这样的对象

 {
      "status": "AlreadyVerified"
 }

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

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

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

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

这行不通

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

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

最好是适用于嵌套和平面对象的某种方式(我猜这就是所谓的!)

标签: php

解决方案


这是一种方法,尽管可能不安全,具体取决于$key来源:

<?php
$object = new stdClass();

$object->extra_info = new stdClass();

$object->extra_info->status = 'AlreadyVerified';

$key = 'extra_info->status';

eval( 'echo $object->'.$key.';' );

输出:

已经验证


此外,如果您想解析,$key则可以使用递归函数来访问嵌套值。


推荐阅读