Ошибка php notice undefined offset 1

I am receiving the following error in PHP

Notice undefined offset 1: in C:wampwwwincludesimdbgrabber.php line 36

Here is the PHP code that causes it:

<?php

# ...

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

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

What does the error mean?

Cœur's user avatar

Cœur

36.9k25 gold badges193 silver badges262 bronze badges

asked Mar 24, 2010 at 14:02

user272899's user avatar

1

If preg_match did not find a match, $matches is an empty array. So you should check if preg_match found an match before accessing $matches[0], for example:

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

answered Mar 24, 2010 at 14:05

Gumbo's user avatar

GumboGumbo

641k109 gold badges775 silver badges843 bronze badges

2

How to reproduce this error in PHP:

Create an empty array and ask for the value given a key like this:

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

What happened?

You asked an array to give you the value given a key that it does not contain. It will give you the value NULL then put the above error in the errorlog.

It looked for your key in the array, and found undefined.

How to make the error not happen?

Ask if the key exists first before you go asking for its value.

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

If the key exists, then get the value, if it doesn’t exist, no need to query for its value.

answered Feb 15, 2014 at 4:28

Eric Leschinski's user avatar

Eric LeschinskiEric Leschinski

146k95 gold badges412 silver badges332 bronze badges

1

Undefined offset error in PHP is Like ‘ArrayIndexOutOfBoundException’ in Java.

example:

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

error: Undefined offset 2

It means you’re referring to an array key that doesn’t exist. «Offset»
refers to the integer key of a numeric array, and «index» refers to the
string key of an associative array.

answered Jan 25, 2015 at 13:12

pathe.kiran's user avatar

pathe.kiranpathe.kiran

2,4241 gold badge20 silver badges27 bronze badges

1

Undefined offset means there’s an empty array key for example:

$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];

You can solve the problem using a loop (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] = "";
}

Martin Tournoij's user avatar

answered Jun 10, 2016 at 22:06

Felix Siaw-Yeboah's user avatar

Приветствую! Посмотрел в логе есть несколько ошибок, помогите исправить пожалуйста, спасибо!

error.log

[Sun Jan 27 08:42:09.476142 2019] [fcgid:warn] [pid 28535] mod_fcgid: stderr: PHP Notice: Only variables should be passed by reference in /var/www/mysite/data/www/mysite.io/core/Classes/Lang.php on line 90

[Sun Jan 27 08:42:09.476145 2019] [fcgid:warn] [pid 28535] mod_fcgid: stderr: PHP Notice: Undefined offset: 1 in /var/www/mysite/data/www/mysite.io/core/Classes/Router.php on line 97

[Sun Jan 27 08:42:18.984905 2019] [fcgid:warn] [pid 28533] mod_fcgid: stderr: PHP Notice: Undefined offset: 1 in /var/www/mysite/data/www/mysite.io/core/Classes/Router.php on line 29, referer: mysite.io/en/

[Sun Jan 27 08:42:18.984922 2019] [fcgid:warn] [pid 28533] mod_fcgid: stderr: PHP Notice: Undefined offset: 1 in /var/www/mysite/data/www/mysite.io/core/Classes/Router.php on line 97, referer: mysite.io/en/

[Sun Jan 27 08:42:26.384808 2019] [fcgid:warn] [pid 28531] mod_fcgid: stderr: PHP Notice: Undefined offset: 1 in /var/www/mysite/data/www/mysite.io/core/Classes/Router.php on line 29, referer: mysite.io/ru/

[Sun Jan 27 08:42:26.384831 2019] [fcgid:warn] [pid 28531] mod_fcgid: stderr: PHP Notice: Undefined offset: 1 in /var/www/mysite/data/www/mysite.io/core/Classes/Router.php on line 97, referer: mysite.io/ru/

Файл Router.php

protected function prepare()
 {
    $url = trim($this->server->get(static::SERVER_KEY), '/');
    @list($root, $query) = explode('?', $url);

    list($lang, $requestUrl) = explode('/', $root, 2); //line 29

    if($this->server->is('POST')) {
        $requestUrl = $lang;
    } else {
        if(in_array($lang, [Lang::LANG_RU, Lang::LANG_EN]) && $lang == config('language.default')) {
            header('Location: /' . $requestUrl);
            die;
        }

        if(
            !in_array($lang, [Lang::LANG_RU, Lang::LANG_EN])
        ) {
            $requestUrl = $url;
            $lang = config('language.default');
        }

        if(
            in_array($lang, [Lang::LANG_RU, Lang::LANG_EN])
            && $lang != lang()->lang()
        ) {
            lang()->setLanguage($lang);

            if($lang == config('language.default')) {
                header('Location: /' . $requestUrl);
            } else {
                header('Location: /' . lang()->lang() . '/' . $requestUrl);
            }

            die;
        }
    }

    $this->url = $requestUrl;
    $this->full_url = $url;
    $this->query = $query;
    $this->params = $this->parseQuery($query);
    $this->arguments = $this->parseArguments($url);
}



protected function parseArguments($url)
 {
    $segments = explode('/', $url);

    $data = [];
    foreach ($segments as $segment) {
        if(in_array($segment, [Lang::LANG_RU, Lang::LANG_EN])) { //line 97
            continue;
        }

        $data[] = $segment;
    }
    return $data;
}

Файл Lang.php

protected function parseFromRaw($raw)
{
$lang = array_shift(explode(',', $raw)); //line 90

return in_array($lang, array_keys($this->getLanguagesList()))
    ? $lang
    : $this->defaultLanguage();
}

Notice: Undefined offset

This error means that within your code, there is an array and its keys. But you may be trying to use the key of an array which is not set.

The error can be avoided by using the isset() method. This method will check whether the declared array key has null value or not. If it does it returns false else it returns true for all cases.

This type of error occurs with arrays when we use the key of an array, which is not set.

Notice: Undefined offset error in PHP

In the following, given an example, we are displaying the value store in array key 1, but we did not set while declaring array “$colorarray.”

Error Example:

<?php
// Declare an array with key 2, 3, 4, 5
$colorarray = array(2=>'Red',3=>'Green',4=>'Blue',5=>'Yellow');
// Printing the value of array at offset 1.
echo $colorarray[1];
?>

Output:

Notice: Undefined offset: 1 in index.php on line 5

Here are two ways to deal with such notices.

  1. Resolve such notices.
  2. Ignore such notices.

Fix Notice: Undefined offset by using isset() Function

Check the value of offset array with function isset(), empty(), and array_key_exists() to check if key exist or not.

Example:

<?php
$colorarray = array(2=>'Red',3=>'Green',4=>'Blue',5=>'Yellow');
// isset() function to check value at offset 1 of array
if(isset($colorarray[1])){echo $colorarray[1];}
// empty() function to check value at offset 1 of array
if(!empty($colorarray[1])){echo $colorarray[1];}
// array_key_exists() of check if key 1 is exist or not
echo array_key_exists(1, $colorarray);
?>

How to Ignore PHP Notice: Undefined offset?

You can ignore this notice by disabling reporting of notice with option error_reporting.

1. Disable Display Notice in php.ini file

Open php.ini file in your favourite editor and search for text “error_reporting” the default value is E_ALL. You can change it to E_ALL & ~E_NOTICE.

By default:

error_reporting = E_ALL

Change it to:

error_reporting = E_ALL & ~E_NOTICE

Now your PHP compiler will show all errors except ‘Notice.’

2. Disable Display Notice in PHP Code

If you don’t have access to make changes in the php.ini file, In this case, you need to disable the notice by adding the following code on the top of your php page.

<?php error_reporting (E_ALL ^ E_NOTICE); ?>

Now your PHP compiler will show all errors except ‘Notice.’

This is a PHP tutorial on how to “fix” undefined index and undefined offset errors.

These are some of the most common notices that a beginner PHP developer will come across. However, there are two simple ways to avoid them.

What is an index?

Firstly, you will need to understand what an index is.

When you add an element to array, PHP will automatically map that element to an index number.

For example, if you add an element to an empty array, PHP will give it the index “0“. If you add another element after that, it will be given the index “1“.

This index acts as an identifier that allows you to interact with the element in question. Without array indexes, we would be unable to keep track of which element is which.

Take the following array as an example.

//Example array
$animals = array(
    0 => 'Cat',
    1 => 'Dog',
    2 => 'Bird'
);

As you can see, Cat has the index “0” and Dog has the index “1“. If I want to print the word “Cat” out onto the page, I will need to access the “Cat” element via its array index.

//We know that "Cat" is at index 0.
echo $animals[0]; //Prints out "Cat"

As you can see, we were able to access the “Cat” element by specifying the index “0“.

Similarly, if we want to print out the word “Dog”, then we can access it via the index “1“.

//Print out "Dog"
echo $animals[1];

If we want to delete the “Dog” element from our PHP array, then we can do the following.

//Deleting "Dog" from our array.
unset($animals[1]);

The unset function will remove the element in question. This means that it will no longer exist.

An undefined offset notice will occur if you attempt to access an index that does not exist.

This is where you’ll encounter nasty errors such as the following.

Notice: Undefined offset: 1 in /path/to/file.php on line 2

Or, if you are using array keys instead of numerical indexes.

Notice: Undefined index: test in /path/to/file.php on line 2

PHP will display these notices if you attempt to access an array index that does not exist.

Although it is not a fatal error and the execution of your script will continue, these kind of notices tend to cause bugs that can lead to other issues.

$_POST, $_GET and $_SESSION.

A lot of beginner PHP developers fail to realize that $_POST, $_GET, $_SESSION, $_FILES, $_COOKIE, $_SERVER and $_REQUEST are all predefined arrays.

These are what we call superglobal variables.

In other words, they exist by default. Furthermore, developers should treat them like regular arrays.

When you access a GET variable in PHP, what you’re actually doing is accessing a GET variable that has been neatly packaged into an array called $_GET.

//$_GET is actually an array
echo $_GET['test'];

In the above piece of code, you are accessing an array element with the index “test”.

Avoiding index errors.

To avoid these errors, you can use two different methods.

The first method involves using the isset function, which checks to see if a variable exists.

//Check if the index "test" exists before accessing it.
if(isset($_GET['test'])){
    //It exists. We can now use it.
    echo $_GET['test'];
} else{
    //It does not exist.
}

The second method involves using the function array_key_exists, which specifically checks to see if an array index exists.

if(array_key_exists('test', $_GET)){
    //It exists
    echo $_GET['test'];
} else{
    //It does not exist
}

When you are dealing with GET variables and POST variables, you should never assume that they exist. This is because they are external variables.

In other words, they come from the client.

For example, a hacker can remove a GET variable or rename it. Similarly, an end user can inadvertently remove a GET variable by mistake while they are trying to copy and paste a URL.

Someone with a basic knowledge of HTML can delete form elements using the Inspect Element tool. As a result, you cannot assume that a POST variable will always exist either.

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    The Offset that does not exist in an array then it is called as an undefined offset. Undefined offset error is similar to ArrayOutOfBoundException in Java. If we access an index that does not exist or an empty offset, it will lead to an undefined offset error.
    Example: Following PHP code explains how we can access array elements. If the accessed index is not present then it gives an undefined offset error.
     

    php

    <?php 

    $students = array(

        0 => 'Rohan',

        1 => 'Arjun',

        2 => 'Niharika'

    );

    echo $students[0];

    echo $students[5];

    echo $students[key];

    ?>

    Output: 
     

    There are some methods to avoid undefined offset error that are discussed below: 
     

    • isset() function: This function checks whether the variable is set and is not equal to null. It also checks if array or array key has null value or not.
      Example: 
       

    php

    <?php 

    $students = array(

        0 => 'Rohan',

        1 => 'Arjun',

        2 => 'Niharika'

    );

    if(isset($students[5])) {

        echo $students[5];

    }

    else {

        echo "Index not present";

    }

    ?>

    Output:

    Index not present
    • empty() function: This function checks whether the variable or index value in an array is empty or not.

    php

    <?php 

    $students = array(

        0 => 'Rohan',

        1 => 'Arjun',

        2 => 'Niharika'

    );

    if(!empty($students[5])) {

        echo $students[5];

    }

    else {

        echo "Index not present";

    }

    ?>

    Output:

    Index not present
  • array_key_exists() function for associative arrays: Associative array stores data in the form of key-value pair and for every key there exists a value. The array_key_exists() function checks whether the specified key is present in the array or not.
    Example:

    php

    <?php 

    function Exists($index, $array) { 

        if (array_key_exists($index, $array)) { 

            echo "Key Found"

        

        else

            echo "Key not Found"

        

    $array = array(

        "ram" => 25, 

        "krishna" => 10, 

        "aakash" => 20

    ); 

    $index = "aakash"

    print_r(Exists($index, $array)); 

    ?>

    Output:

    Key Found

    PHP is a server-side scripting language designed specifically for web development. You can learn PHP from the ground up by following this PHP Tutorial and PHP Examples.

  • Last Updated :
    31 Jul, 2021

    Like Article

    Save Article

  • Ошибка php network getaddresses
  • Ошибка packet tracer has stopped working unexpectedly
  • Ошибка php call to undefined function
  • Ошибка package e1071 is required
  • Ошибка php artisan migrate