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

时间:2015-09-19 08:35:30

标签: php

我收到一个“未定义的偏移”PHP错误,并且没有得到导致它的原因。我只是个初学者。

$encode_data = '[[{"name":"category_1", "values":"packages"},{"name":"PK_1", "values": "1"}],[{"name":"category_2", "value":"products"},{"name":"PK_2", "value": "3"}]]';

$dataAr = json_decode($encode_data , true);


foreach($dataAr as $data)
{   
    foreach($data as $value){
        $value=array_values($value);
        echo 'name => ' .$value[0] . ' value => ' .$value[1];
        echo "<br>";
    }

}

这是我正在使用的代码:

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];

以下是调试回声所说的内容:https://gyazo.com/2e1a6e90f1a33578b40e5f330e19dd78

任何线索如何解决这个问题?

1 个答案:

答案 0 :(得分: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作为索引会给你这个错误。