Я получаю следующую ошибку в 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
не нашел совпадения, $matches
– пустой массив. Поэтому вы должны проверить, было ли preg_match
обнаружено совпадение перед доступом к $matches[0]
, например:
function get_match($regex,$content) { if (preg_match($regex,$content,$matches)) { return $matches[0]; } else { return null; } }
Как воспроизвести эту ошибку в PHP:
Создайте пустой массив и попросите значение, заданное таким ключом:
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, а затем поместите вышеуказанную ошибку в errorlog.
Он искал ваш ключ в массиве и нашел undefined
.
Как сделать ошибку не так?
Спросите, существует ли ключ прежде, чем вы попросите его значение.
php> echo array_key_exists(0, $foobar) == false; 1
Если ключ существует, то получите значение, если оно не существует, нет необходимости запрашивать его значение.
Неопределенная ошибка смещения в PHP напоминает «ArrayIndexOutOfBoundException» в Java.
пример:
<?php $arr=array('Hello','world');//(0=>Hello,1=>world) echo $arr[2]; ?>
ошибка: неопределенное смещение 2
Это означает, что вы имеете в виду ключ массива, который не существует. «Смещение» относится к целочисленному ключу числового массива, а «индекс» относится к строковому ключу ассоциативного массива.
Неопределенное смещение означает, что есть пустой ключ массива, например:
$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] = ""; }