php落手点,关于我遇到的php的 offset 的一点的总结

本文探讨了在PHP中,如何处理explode()函数遇到的'Undefinedoffset'警告,尤其是在处理字符串分割时数组越界问题。通过实例分析,我们了解到空值数组元素导致的错误,并提供了修改代码和解决方法,包括限制explode()的参数或移除多余元素。
摘要由CSDN通过智能技术生成

从上面可以看出,$arr[3]其实是不存在的,所以运行后出现了一条警告:

Notice: Undefined offset: 3 in D:\wamp\apache\htdocs\test……

Undefined offset,说明$arr[3],不存在,其超过了你所设置的数组长度。

再来看一段代码:

".

"亚里士多德||希腊||没有一个人能全面把握真理。".

"达·芬奇||意大利||运动是一切生命的源泉。";

$data = explode("", $sayings); //explode返回一个数组

foreach($data as $line)

{

list($author, $nationality, $content) = explode("||", $line);

echo $nationality."的 ".$author." 说 ".$content."

";

}

?>

执行完后输出:

美国的 爱因斯坦 说 探索真理比占有真理更为可贵。

希腊的 亚里士多德 说 没有一个人能全面把握真理。

意大利的 达·芬奇 说 运动是一切生命的源泉。

Notice: Undefined offset: 2 inD:\wamp\apache\htdocs\test\explode.phpon

line29

Notice: Undefined offset: 1 inD:\wamp\apache\htdocs\test\explode.phpon

line29

的 说

这是为什么呢?我找了很久,终于发现错误出现在$data=explode("",$sayings);

就是这段代码,还是数组的问题。explode()返回一个函数:

arrayexplode(string $delimiter,string $string[,int $limit]

)

让我们打印出$data:

Array

(

[0] => 爱因斯坦||美国||探索真理比占有真理更为可贵。

[1] => 亚里士多德||希腊||没有一个人能全面把握真理。

[2] => 达·芬奇||意大利||运动是一切生命的源泉。

[3] =>

)

发现没有,$data[3]为空值,这为下面使用list()函数,然后list()函数在解析$data[3]时就出现offset了。

offset就是你所引用的那个数组值实际不存在,所以出现Undefined offset

就是$sayings 字符串的内容后面多了一个"",导致在用explode()函数时出现了$data[3]这个空值。所以在使用explode()函数时注意了。

解决办法就是改一段代码:$data=explode("",$sayings);

$data = explode("", $sayings, 3);

或在这段代码下面加上 unset($data[count($data)-1]);就是得把那个空数组值变量给去掉。具体的,读者多多体会吧。

test.jsp?url=http%3A%2F%2Fstatic.blog.csdn.net%2Fxheditor%2Fxheditor_emot%2Fdefault%2Flaugh.gif&refer=http%3A%2F%2Fblog.csdn.net%2Fjiaobuchong%2Farticle%2Fdetails%2F15501001

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值