我想在將索引作爲字符串傳遞後獲取數組值。PHP - 傳遞字符串作爲對象數組的索引
$array = $user->challengeWeek;
$arrayIndex = 'challenge->languages[0]->title';
foreach($array as $a){
echo $a->$arrayIndex . '<br/>;
}
對此有何建議?
我想在將索引作爲字符串傳遞後獲取數組值。PHP - 傳遞字符串作爲對象數組的索引
$array = $user->challengeWeek;
$arrayIndex = 'challenge->languages[0]->title';
foreach($array as $a){
echo $a->$arrayIndex . '<br/>;
}
對此有何建議?
您需要一次處理路徑的一個元素,但不能直接訪問它。一個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);
}
謝謝。它給我一個錯誤:在這個集合實例中不存在「Property [0]」。 –
然後,您正在嘗試訪問它的對象和您嘗試訪問的路徑不匹配。 – deceze
' - >'表示對象。確保你瞭解差異。 –