Неопределенное смещение 1

Неопределенное смещение: 1

Привет … Я столкнулся с проблемой, что неопределенное смещение: 1 в строке 3. Я не могу понять, что это за тип ошибки. Может ли кто-нибудь сказать мне, почему такая ошибка возникает в php

Неопределенное смещение в строке: 3

foreach ($lines as $line) { list($var,$value) = explode('=', $line); //line 3 $data[$var] = $value; } 

Related of "Неопределенное смещение 1"

Вы получаете notice PHP, потому что пытаетесь получить доступ к индексу массива, который не задан.

 list($var,$value) = explode('=', $line); 

Вышеупомянутая строка взрывает строку $line with = и присваивает 0th значение в $var и 1st значении в $value . Проблема возникает, когда $line содержит некоторую строку без = .

Я знаю, что это старый вопрос, и достаточный ответ: «Вы получаете уведомление PHP, потому что пытаетесь получить доступ к индексу массива, который не задан». но я считаю, что лучший способ преодолеть проблему с неопределенными индексами, когда есть случаи, когда у вас может быть пустой массив, используя combo () / explode (), следует установить значения по умолчанию с помощью массива pad.

Причина в том, что когда вы используете list (), вы знаете количество переменных, которое вы хотите от массива.

Например:

 $delim = '='; $aArray = array() $intNumberOfListItems = 2; list($value1, $value2) = array_pad(explode($delim, $aArray, $intNumberOfListItems ), $intNumberOfListItems , null); 

По сути, вы передаете третий параметр, чтобы взорваться, указав, сколько значений вам нужно для ваших переменных list () (в приведенном выше примере два). Затем вы используете array_pad для указания значения по умолчанию (в приведенном выше примере null), когда массив не содержит значения для переменной списка.

путем выполнения списка ($ var, $ value) php ожидает массив из 2 элементов, если функция разрыва не найдет символ равенства, он вернет только массив с 1 элементом, вызывающим неопределенную ошибку смещения, смещение 1 – второе элемент массива, поэтому, скорее всего, одна из ваших переменных $ line не имеет знака равенства

Это связано с массивом. Индекс массива не отображается из-за этой неопределенной ошибки смещения …

Поэтому, пожалуйста, проверьте массив с помощью функции print_r.

Конструкция языка list используется для создания отдельных переменных из массива. Если в вашем массиве недостаточно элементов для количества переменных, которые вы ожидаете в вызове list , вы получите сообщение об ошибке. В вашем случае у вас есть 2 переменные, поэтому вам нужен массив с 2 элементами – индексы 0 и 1.

http://php.net/manual/en/function.list.php

Решение:

 $lines = array('one' => 'fruit=apple', 'two' => 'color=red', 'three' => 'language'); foreach ($lines as $line) { list($var,$value) = (strstr($line, '=') ? explode('=', $line) : array($line, '')); $data[$var] = $value; } print_r($data); 

Попробуй это..

Для справки http://in1.php.net/manual/en/function.list.php http://in1.php.net/manual/en/function.explode.php