【发布时间】:2014-11-29 18:54:24
【问题描述】:
我正在尝试从一个深度为 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']吗?还是只是某个地方的错字? -
for循环中的第二行不再需要['character']! -
糟糕!对不起,我的坏,没有先看到它。好的 - 其余的看起来都不错。您是否尝试在违规行之前插入
print_r($c[$i])?那里的输出可能会说明出了什么问题,如果您也可以粘贴它,这将有助于我们解决问题。 -
可能有些数组,(因为输出图片被截断了)确实有未定义的索引,用isset,看看下面的答案
标签: php arrays multidimensional-array indexing