복붙노트

정의되지 않은 오프셋 PHP 오류

PHP

정의되지 않은 오프셋 PHP 오류

PHP에서 다음과 같은 오류가 발생합니다.

그것을 일으키는 PHP 코드는 다음과 같습니다.

<?php

# ...

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

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

오류는 무엇을 의미합니까?

해결법

  1. ==============================

    1.preg_match가 일치하는 것을 찾지 못하면 $ matches는 빈 배열입니다. 예를 들어, $ matches [0]에 액세스하기 전에 preg_match가 일치하는 항목을 찾았는지 확인해야합니다.

    preg_match가 일치하는 것을 찾지 못하면 $ matches는 빈 배열입니다. 예를 들어, $ matches [0]에 액세스하기 전에 preg_match가 일치하는 항목을 찾았는지 확인해야합니다.

    function get_match($regex,$content)
    {
        if (preg_match($regex,$content,$matches)) {
            return $matches[0];
        } else {
            return null;
        }
    }
    
  2. ==============================

    2.PHP에서이 오류를 재현하는 방법 :

    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 값을주고 그 오류 로그에 위의 오류를 넣을 것입니다.

    그것은 배열에서 귀하의 키를 찾고, 정의되지 않은 것으로 나타났습니다.

    오류가 발생하지 않도록하는 방법?

    키 값을 묻기 전에 키가 먼저 존재하는지 물어보십시오.

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

    키가 존재하면 값을 가져오고, 존재하지 않으면 그 값을 질의 할 필요가 없습니다.

  3. ==============================

    3.PHP에서 정의되지 않은 오프셋 오류는 Java에서 'ArrayIndexOutOfBoundException'과 같습니다.

    PHP에서 정의되지 않은 오프셋 오류는 Java에서 'ArrayIndexOutOfBoundException'과 같습니다.

    예:

    <?php
    $arr=array('Hello','world');//(0=>Hello,1=>world)
    echo $arr[2];
    ?>
    

    오류 : 정의되지 않은 오프셋 2

    존재하지 않는 배열 키를 말하는 것입니다. "오프셋" 숫자 배열의 정수 키를 말하며, "index"는 숫자 배열의 정수 키를 나타냅니다. 연관 배열의 문자열 키.

  4. ==============================

    4.정의되지 않은 오프셋은 빈 배열 키가 있다는 것을 의미합니다.

    정의되지 않은 오프셋은 빈 배열 키가 있다는 것을 의미합니다.

    $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. from https://stackoverflow.com/questions/2508215/undefined-offset-php-error by cc-by-sa and MIT license