未定义的偏移 PHP 错误

2022-08-30 10:31:44

我在 PHP 中收到以下错误

注意未定义的偏移量 1:在 C:\wamp\www\include\imdbgrabber.php第 36 行

以下是导致它的PHP代码:

<?php

# ...

function get_match($regex, $content)  
{  
    preg_match($regex,$content,$matches);     

    return $matches[1]; // ERROR HAPPENS HERE
}

错误是什么意思?


答案 1

如果preg_match没有找到匹配项,则为空数组。因此,您应该在访问之前检查是否找到匹配项,例如:$matchespreg_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,然后将上述错误放在错误日志中。

它在数组中查找您的密钥,并找到了 .undefined

如何使错误不发生?

在询问密钥值之前,请先询问密钥是否存在。

php> echo array_key_exists(0, $foobar) == false;
1

如果键存在,则获取该值,如果它不存在,则无需查询其值。


推荐