所以可以说我有一个这样的物体
{
"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] 删除。
我来说两句