PHP数组使用list()方法时出现未定义偏移量的错误

13
list(,,,,,,,,,$user, $pass) = explode("\t", $line);
if(trim($user) == $_POST['username'] && trim($pass) == $_POST['password'] )

错误消息为“undefined offset 10”,“undefined offset 9”。其中的9和10是$user和$pass。我该如何修复这个错误?未定义的偏移量是否意味着它没有被声明或其他原因?有很多逗号,因为有值但我不需要用在这个PHP中。

1个回答

30
在这个上下文中,undefined offset的意思是你在调用list时期望的参数数量比等式右边的数组中的数量多。
你期望一个长度为11的数组,但是explode("\t", $line)返回的数组长度小于11。
你可以确保$line中有正确数量的以制表符分隔的值,或者使用array_pad来填充explode的输出。
以下是使用array_pad确保数组长度为11的示例:
list(,,,,,,,,,$user, $pass) = array_pad(explode("\t", $line), 11, null);

如果$line中没有足够的制表符分隔的值,那么$user$pass将取值null

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