未定义的偏移PHP错误,尝试从文件中读取


Undefined offset PHP error, trying to read from file

我遇到了一个"未定义的偏移量"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

下面是调试echo所说的: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作为索引会出现此错误。