【问题标题】:Undefined offset error, but offset is not undefined未定义的偏移量错误,但偏移量不是未定义的
【发布时间】:2026-01-08 15:55:01
【问题描述】:

我明白了:

Notice: Undefined offset: 0 

在我的代码中,但是我可以 print_r 我想要获取的元素及其明确定义。

function get_members($entries_found) {
   $members = $entries_found[0]['member'];
   ...
}

如果我 print_r($members) 我得到了预期的输出,但我仍然得到了通知。

有什么线索吗?

【问题讨论】:

  • 行号是否与通知匹配。它可能在您的代码中的其他位置。 print_r 输出可能会有所帮助。
  • 尝试 var_dumping 以确保 0 是 int 而不是 '0'
  • 行号与错误信息匹配。肯定是 $members = ... 抛出错误的行。我已将其注释掉以确认这一点。 print_r 输出我期望的数组。我不能在这里粘贴它,因为它包含敏感信息。 0 绝对是 int 而不是 '0'。
  • 请提供数组代码和/或函数代码,以便其他用户更好地查看,以帮助调试过程。
  • PHP 在通知您时不会对您撒谎。你必须忽略一些事情,可能会做一个print_r($entries_found),尤其是如果你真的想写好的代码,在你从它获取值之前检查索引的存在。

标签: php arrays offset


【解决方案1】:

var_dump($entries_found);

检查数组确实有零偏移。您可以尝试的其他事情是重置数组指针

reset($entries_found);

检查是否先设置

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

如果一切都失败了,你可以用

来取消通知
$members = @$entries_found[0]['member'];

【讨论】:

    【解决方案2】:

    在从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];
    

    从这里得到我的解决方案:Undefined offset while accessing array element which exists

    【讨论】: