2017-07-12 63 views
-1

我想在将索引作为字符串传递后获取数组值。PHP - 传递字符串作为对象数组的索引

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

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

对此有何建议?

+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); 
} 
+0

谢谢。它给我一个错误:在这个集合实例中不存在“Property [0]”。 –

+0

然后,您正在尝试访问它的对象和您尝试访问的路径不匹配。 – deceze