Undefined смещение PHP-ошибки
Я получаю следующую ошибку в PHP
Обратите внимание на неопределенное смещение 1: в строке C:\wamp\www\includes\imdbgrabber.php 36
Вот код PHP, который вызывает это:
<?php
# ...
function get_match($regex, $content)
{
preg_match($regex,$content,$matches);
return $matches[1]; // ERROR HAPPENS HERE
}
Что означает ошибка?
Ответы
Ответ 1
Если preg_match
не найдено совпадения, $matches
- пустой массив. Поэтому вы должны проверить, не найдено ли preg_match
совпадение перед доступом к $matches[0]
, например:
function get_match($regex,$content)
{
if (preg_match($regex,$content,$matches)) {
return $matches[0];
} else {
return null;
}
}
Ответ 2
Как воспроизвести эту ошибку в 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
Если ключ существует, то получите значение, если оно не существует, не нужно запрашивать его значение.
Ответ 3
Undefined Ошибка смещения в PHP похожа на 'ArrayIndexOutOfBoundException' на Java.
Пример:
<?php
$arr=array('Hello','world');//(0=>Hello,1=>world)
echo $arr[2];
?>
ошибка: Undefined смещение 2
Это означает, что вы имеете в виду ключ массива, который не существует. "Смещение"
относится к целочисленному ключу числового массива, а "индекс" относится к
Строковый ключ ассоциативного массива.
Ответ 4
Undefined offset означает, что имеется пустой ключ массива, например:
$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] = "";
}
Ответ 5
Я получаю следующую ошибку в PHP
Примечание: неопределенное смещение: 0 в C:\xampp\htdocs\skripsi\tf-idf\IR.php в строке 81
function ndw($term) {
$term = strtolower($term);
$doc_locations = $this->corpus_terms[$term];
$num_locations = count($doc_locations);
$docs_with_term = array();
$i=0;
for($doc_location=0; $doc_location<$num_locations; $doc_location++)$docs_with_term[$i]++; //line 81
return count($docs_with_term);
}