我能做到:
$key = 'address';
$user->{$key}
有没有办法让这项工作更深层次?我事先并不知道有多少级别。
$key = 'address->street';
$user->{$key}
这是我实际想要实现的目标:
$filterIds = [];
$filterIds['facebook->followers'] = 1;
$filterIds['googleplus->followers'] = 2;
$filterIds['instagram->followers'] = 3;
...
foreach($filterIds as $filterKey => $filterId) {
if(self::property_path_exists($data, $filterKey)) {
$filter = new ResultFilter;
$filter->result_filter_id = $filterId;
$filter->value = $data->{$filterKey};
$filter->save();
}
}
答案 0 :(得分:1)
实施例
<?php
$v = new stdClass;
$v->x = new stdClass;
$v->x->y = new stdClass;
$v->x->y->z = "wow";
$keys = "x->y->z";
$t = &$v;
foreach (explode("->", $keys) as $key) {
// @TODO add isset($t->{$key})
$t = &$t->{$key};
}
print($t . PHP_EOL);
$t = "changed";
print($v->x->y->z . PHP_EOL);
如果要编辑此嵌套对象,请记住使用引用(&
)。