PHP - 将字符串作为对象数组的索引传递

时间:2017-07-12 11:05:31

标签: php arrays object

我希望在将索引作为字符串传递后获取数组值。

$array = $user->challengeWeek;
$arrayIndex = 'challenge->languages[0]->title';

foreach($array as $a){
    echo $a->$arrayIndex . '<br/>;
}

对此有何提示?

1 个答案:

答案 0 :(得分:0)

您需要一次处理路径的一个元素,不能直接访问它。 array_reduce在这里做得非常好:

function getValueFromPath($o, array $path) {
    return array_reduce(
        $path,
        function ($o, $key) { return is_array($o) ? $o[$key] : $o->$key; },
        $o
    );
}

$path = ['challenge', 'languages', 0, 'title'];

foreach ($array as $a) {
    echo getValueFromPath($a, $path);
}