Неопределенное смещение 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
}

Что означает ошибка?

4 ответа

Решение

Если 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, а затем поместите вышеуказанную ошибку в журнал ошибок.

Он искал ваш ключ в массиве и нашел 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] = "";
}

Я получаю следующую ошибку в 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);
}
Другие вопросы по тегам