我知道这个错误已经发生了很多,但是我无法在网站上找到另一个问题来解决我的问题。
这是我的代码:
<?php
$handle = fopen('text document here', 'r');
if ($handle === false) {
die("ERROR");
}
$array = array();
$array = fgets($handle);
$handle = explode("\n", $array);
$foo = $handle;
$outA = array();
$outB = array();
foreach($foo as $value)
{
list($x, $y) = explode(",",$value);
$outA[] = $x;
$outB[] = $y;
}
echo $outA[0];
echo $outB[0];
?>
我一直收到错误“注意:未定义的偏移:第20行的C:\ wamp \ www \ arraytest.php中的1”
虽然我收到了错误,但是我从数组中打印出前两个值并且它们似乎都是正确的,所以我不确切知道是什么导致了这个。
- 编辑 -
以下是我导入的数据的结构:
12,13
12,14
12,15
12,16
12,17
12,18
12,21
12,22
12,31
答案 0 :(得分:0)
这里的问题是你实际上没有循环遍历文件中的所有行。
$array = fgets($handle);
现在,$array
变量只包含第一行。其余的行被忽略了。
并且,在您的代码中,您有:
list($x, $y) = explode(",",$value);
基本上尝试将第一个数组值分配给$x
,将第二个数组分配给$y
。没有第二项,因此您会收到Undefined offset
错误。
解决方案是实际循环线。我将使用while
循环,如下所示:
$handle = fopen('text document here', 'r');
if ($handle === false) {
die("ERROR");
}
while(!feof($handle))
{
$value = fgets($handle);
list($x, $y) = explode(",",$value);
$outA[] = $x;
$outB[] = $y;
}
echo $outA[0]."\n";
echo $outB[0];
输出:
12
13
其他值也正确存储。您可以使用print_r($outA);
验证这一点。