2015-09-19 2 views
4

Я получаю ошибку «Неопределенное смещение» PHP и не понимаю, что вызывает ее. Я просто новичок.Неопределенное смещение ошибки PHP, попытка чтения из файла

Notice: Undefined offset: 3 on line 58 

Вот код, я использую:

$file = fopen("portfolio.file", "r") or die("Unable to open a portfolio file."); 
$portfolioFull = fread($file,filesize("portfolio.file")); 
fclose($file); 
$portfolioItems = explode(";", $portfolioFull); 
$i = count($portfolioItems); 
echo $i; 
while ($i >= 0){ 
    $portfolio[$i] = explode("||", $portfolioItems[$i]); 
    $i = $i - 1; 
} 
echo $portfolio[1][0]; 
echo $portfolio[1][1]; 
echo $portfolio[1][2]; 
echo $portfolio[2][0]; 
echo $portfolio[2][1]; 
echo $portfolio[2][2]; 

Вот что портфель файл содержит:

Item 1 Title 
|| 
Item 1 Description 
|| 
DOWNLOAD PENDING 
; 
Item 2 Title 
|| 
Item 2 Description 
|| 
DOWNLOAD UNAVAILABLE 
; 
Test Item 
|| 
Test Description 
|| 
DOWNLOAD AVAILABLE 

И вот что отлаживать эхо говорит: https://gyazo.com/2e1a6e90f1a33578b40e5f330e19dd78

Любые подсказки, КАК исправить это?

+0

Не могли бы вы указать, какая линия линии 58? – jaibatrik

+0

Попробуйте запустить цикл как 'while ($ i> 0)' вместо 'while ($ i> = 0)' – jaibatrik

+0

@jaibatrik ** Строка 58: ** '$ portfolio [$ i] = explode (" || ", $ portfolioItems [$ i]);' –

ответ

2
$i = count($portfolioItems); 
echo $i; 
$i-- ; //reduce by one should fix the problem 
while ($i >= 0){ 
    $portfolio[$i] = explode("||", $portfolioItems[$i]); 
    $i = $i - 1; 
} 

Так как индекс массива начинается с нуля, то значение последнего элемента будет count($array) -1.

В этом случае вы используете значение count, которое будет на 1 больше, чем последний индекс. Пример: если массив имеет 3 элемента, индексы будут равны 0, 1, 2. Попытка использовать 3 в качестве индекса даст вам эту ошибку.

+1

Отлично, спасибо! –

Смежные вопросы