未定义的偏移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

任何线索如何解决?

最佳答案

$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.

在这种情况下,您使用的计数值将比最后一个索引大1.例如:如果数组有3个元素,则索引将为0,1,2.尝试使用3作为索引将给您这个错误.

点赞