2017-07-12 80 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