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

4
我遇到了一个"Undefined offset"的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];

这是portfolio文件的内容:

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

以下是debug echo的输出:https://gyazo.com/2e1a6e90f1a33578b40e5f330e19dd78

有什么线索可以解决这个问题吗?


你能指出第58行是哪一行吗? - jaibatrik
尝试将循环运行方式更改为 while ($i > 0),而不是 while ($i >= 0) - jaibatrik
@jaibatrik 第58行: $portfolio[$i] = explode("||", $portfolioItems[$i]); - user5353145
@jaibatrik 在更改为 while ($i > 0) 后仍然没有任何变化。 - user5353145
1个回答

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
在这种情况下,您正在使用计数值,该值比最后一个索引大1。例如:如果数组有3个元素,则索引将为0、1、2。尝试使用3作为索引将导致出现此错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接