未定义的偏移量错误,但偏移量不是未定义的
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_r
和 var_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
【讨论】:
以上是关于未定义的偏移量错误,但偏移量不是未定义的的主要内容,如果未能解决你的问题,请参考以下文章
Angular 5:错误类型错误:无法读取未定义的属性“偏移量”
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP