未定义的偏移错误,但偏移量并未未定义。

4

I'm getting:

Notice: Undefined offset: 0 

在我的代码中,我可以使用print_r打印出我正在尝试获取的元素,而且它已经被明确定义。
function get_members($entries_found) {
   $members = $entries_found[0]['member'];
   ...
}

如果我打印 print_r($members),我会得到预期的输出,但我仍然收到 Notice 提示。
有任何线索吗?

2
通知的行号是否匹配?它可能在您的代码中的其他位置。print_r输出可能会有所帮助。 - Jason McCreary
尝试使用var_dump进行转储,以确保0是int类型而不是'0'。 - Mike B
行号与错误消息相匹配。肯定是 $members = ... 这一行引发了错误。我已将其注释以确认。print_r 输出了我期望的数组。由于它包含敏感信息,我无法在此处粘贴。0 肯定是 int 而不是 '0'。 - khendar
请提供数组代码和/或函数代码,以便其他用户更好地查看,从而帮助调试过程。 - Knowledge Craving
当 PHP 给出提示时,它不会欺骗您。您必须忽略某些东西,可能需要执行 print_r($entries_found),特别是如果您真的想编写良好的代码,请在获取值之前检查索引的存在。 - hakre
2个回答

0

在从get_members访问$entries_found之前,我真的不知道会发生什么。

但是我也遇到了同样的问题。print_rvar_dump向我展示了索引存在,但当我尝试访问它时,我得到了offset error

在我的情况下,我使用json_decode解码了一个JSON字符串,但没有设置assoc标志。

// Not working
$assocArray = json_decode('{"207":"sdf","210":"sdf"}');
echo $assocArray[207];


// working witht the assoc flag set
$assocArray = json_decode('{"207":"sdf","210":"sdf"}', true);
echo $assocArray[207];

我从这里找到了解决方案:访问已存在的数组元素时出现未定义的偏移量


0

var_dump($entries_found);

为了检查数组确实具有零偏移量,您还可以尝试重置数组指针。

reset($entries_found);

先检查它是否已设置

if (isset($entries_found[0]['member'])) // do things

如果其他方法都失败了,你可以使用以下代码来抑制这个提示:
$members = @$entries_found[0]['member'];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接