неопределенное смещение 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 не нашел совпадения, $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] = ""; }