PHP通过数组中的字符串访问嵌套对象属性

时间:2014-12-18 14:26:34

标签: php oop properties

我们说我们有一个对象$ obj。该对象具有如下属性:

$obj->p1->p2->p3 = 'foo';

现在我在数组中获得嵌套属性结构:

$arr = array( 'p1', 'p2', 'p3' );

目前我使用以下函数来相应地访问该属性:

function getProperty( $obj, $property ) {
foreach( $property as $p ) {
  $obj = $obj->{$p};
 }
 return $obj;
}

$value = getProperty( $obj, $arr); // = 'foo'

有没有更聪明的方法(不,' eval'不是一个选项!;))?

1 个答案:

答案 0 :(得分:1)

如果你想让它在一行或更漂亮,你可以试试这个:

echo json_decode(json_encode($obj), true)['p1']['p2']['p3']; // PHP 5.4

或PHP 5.3:

$arr = json_decode(json_encode($obj), true);
echo $arr['p1']['p2']['p3'];

这是你想要实现的目标吗?