未定义的偏移量错误,但偏移量不是未定义的

Posted

技术标签:

【中文标题】未定义的偏移量错误,但偏移量不是未定义的【英文标题】:Undefined offset error, but offset is not undefined 【发布时间】:2011-03-13 16:04:36 【问题描述】:

我明白了:

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),尤其是如果你真的想写好的代码,在你从它获取值之前检查索引的存在。 【参考方案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

【讨论】:

以上是关于未定义的偏移量错误,但偏移量不是未定义的的主要内容,如果未能解决你的问题,请参考以下文章

未定义的偏移量:1 laravel

如何解决这个未定义的偏移量:0 错误?

Angular 5:错误类型错误:无法读取未定义的属性“偏移量”

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP