未定义的偏移PHP错误
我在PHP中收到以下错误
Notice undefined offset 1: in C:\wamp\www\includes\imdbgrabber.php line 36
这是导致它的PHP代码:
<?php # ... function get_match($regex, $content) { preg_match($regex,$content,$matches); return $matches[1]; // ERROR HAPPENS HERE }
错误是什么意思?
如果preg_match
没有find匹配, $matches
是一个空数组。 因此,您应该检查preg_match
在访问$matches[0]
之前是否find了匹配项,例如:
function get_match($regex,$content) { if (preg_match($regex,$content,$matches)) { return $matches[0]; } else { return null; } }
如何在PHP中重现这个错误:
创build一个空数组,并要求给定一个这样的键的值:
php> $foobar = array(); php> echo gettype($foobar); array php> echo $foobar[0]; PHP Notice: Undefined offset: 0 in /usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(578) : eval()'d code on line 1
发生了什么?
你问了一个数组给你一个它不包含的键的值。 它会给你的值NULL,然后把上面的错误在错误日志。
它在数组中查找您的密钥,并发现undefined
。
如何使错误不会发生?
在询问其价值之前询问密钥是否存在。
php> echo array_key_exists(0, $foobar) == false; 1
如果密钥存在,则获取该值,如果不存在,则不需要查询其值。
PHP中未定义的偏移量错误与Java中的“ArrayIndexOutOfBoundException”类似。
例:
<?php $arr=array('Hello','world');//(0=>Hello,1=>world) echo $arr[2]; ?>
错误:未定义偏移量2
这意味着你指的是一个不存在的数组键。 “偏移”是指数字数组的整数键,“索引”是指关联数组的string键。
未定义的偏移意味着有一个空的数组键,例如:
$a = array('Felix','Jon','Java'); // This will result in an "Undefined offset" because the size of the array // is three (3), thus, 0,1,2 without 3 echo $a[3];
您可以使用循环(while)来解决问题:
$i = 0; while ($row = mysqli_fetch_assoc($result)) { // Increase count by 1, thus, $i=1 $i++; $groupname[$i] = base64_decode(base64_decode($row['groupname'])); // Set the first position of the array to null or empty $groupname[0] = ""; }