我試圖從一個3層深的數組中訪問一個值,但PHP報告索引是未定義的,而它當然是。取消使用相同的索引工作正常!奇怪的行爲:未定義的索引,雖然索引是正確的
代碼:
function CleanUpCharacters($c) //Remove unneeded information
{
for ($i = 0; $i < count($c); ++$i)
{
$c[$i]['character']['rank'] = $c[$i]['rank']; // Move rank in to char
$c[$i] = $c[$i]['character']; // Move subarray char's keys/values to parent array
unset($c[$i]['battlegroup']);
unset($c[$i]['level']);
unset($c[$i]['achievementPoints']);
unset($c[$i]['thumbnail']);
$c[$i]['specName'] = $c[$i]['spec']; // <--- Undefined index notice
unset($c[$i]['spec']); // <--- Works fine, no errors
unset($c[$i]['guild']);
unset($c[$i]['guildRealm']);
}
return $c;
}
的線會導致該錯誤實際上是$c[$i]['specName'] = $c[$i]['spec']['name']
;我刪除['name']
,看看是否解決了問題,但沒有。
這裏是未經過濾的陣列的截圖,$c
:
我猜'spec'是在'character'裏面的。所以不應該是'$ c [$ i] ['character'] ['spec'] ['name']'?或者它只是一個錯別字? – 2014-10-05 07:34:14
'for'循環中的第二行刪除了對[['character']'的需求! – 2014-10-05 07:35:13
糟糕!對不起,我先看不到它。好的 - 其餘的看起來不錯。您是否嘗試在違規行之前插入print_r($ c [$ i])?那裏的輸出可能會給出一個關於發生什麼問題的想法,並且如果您也可以粘貼它,這對我們有幫助。 – 2014-10-05 07:44:49