Php将对象路径传递给函数

Php将对象路径传递给函数,php,Php,这可能非常容易。给出了以下目标和功能: $object = new stdClass(); $object->a = 'Here we go'; $object->b->first = "again"; $object->b->second = "and again"; function get_item($object, $item){ print_r($object->{$item}); } get_item($object, "a"); //

这可能非常容易。给出了以下目标和功能:

$object = new stdClass();
$object->a = 'Here we go';
$object->b->first = "again";
$object->b->second = "and again";

function get_item($object, $item){
    print_r($object->{$item});
}

get_item($object, "a"); // works
get_item($object, "b->first"); // NOTICE Undefined property: stdClass::$b

当它向函数传递单个属性时,传递像
b->first
这样的路径失败。有人能告诉我如何解决这个问题吗?

您不能直接执行,但可以逐级执行,因此在函数中使用
explode()
将其拆分为每个级别,并一次应用一个级别

function get_item($object, $item){
    $output = $object;
    foreach ( explode("->", $item) as $level )  {
        $output = $output->{$level};
    }
    print_r($output);
}

您不能直接执行,但可以逐级执行,因此在函数中使用
explode()
将其拆分为每个级别,并一次应用一个级别

function get_item($object, $item){
    $output = $object;
    foreach ( explode("->", $item) as $level )  {
        $output = $output->{$level};
    }
    print_r($output);
}

您也可以这样做,而不是
get_item($object,“b->first”)使用
获取物品($object->b,“first”)


您也可以这样做,而不是
获取项目($object,“b->first”)使用
获取物品($object->b,“first”)



没有简单的方法。PHP无法理解字符串中的
->
是运算符。没有简单的方法。PHP无法理解字符串中的
->
是一个运算符。我只想添加几乎完全相同的答案-因此我的投票:DOne可以问一个问题为什么有一个函数?我只想添加几乎完全相同的答案-因此我的投票:DOne可以问一个问题为什么有一个函数?