在PHP中读取特定的CSV值

时间:2011-09-08 03:56:00

标签: php parsing csv

我有以下CSV文件:

08-0018421032;00-0018151831;G-20009429-0;G-20009429-0;0374048-0
27-001842101232;10-0018151831;G-30009429-0;G-50009429-0;7374048-0
36-0018421033232;20-0018151831;G-40009429-0;G-60009429-0;8374048-0

如你所见,分隔符是;符号

然后我通过jquery插件将此信息发送到php,因为我可以在PHP中读取文件,所以它非常有用。以下代码获取CSV文件(这是$ csvfile变量),我可以看到其中的行:

$file = fopen("upload/$csvfile", "r");
while (!feof($file) ) {
$line = fgetcsv($file, 1024,';');
print $line[0].'<br/>';
}
fclose($file);

我需要的是不仅能够选择线路,还能选择其中的值。要转到特定值,例如在第一行中,第3个值将是 G-20009429-0 ,我会将其分配给稍后要使用的php变量。

现在我不知道如何获取一行中的特定值,而且当我打印$ line [0]时,它以垂直顺序而不是水平顺序显示值。我的意思是它显示以下输出:

00-0018151831
10-0018151831
20-0018151831

而不是像这样向我展示:

 08-0018421032;00-0018151831;G-20009429-0;G-20009429-0;0374048-0

也许是睡眠,但我被困在这里。重复一遍,csv文件由Php正确读取,因为我可以在其上执行print_r并显示其中的所有行。问题是如何在拥有csv之后操纵信息以及如何获取特定行中的特定值。谢谢。

1 个答案:

答案 0 :(得分:1)

$line是一个包含该行中每个元素的数组。 $line[0]是行的第一个元素,$line[1]是第二个元素,依此类推。试试var_dump($line)。你正在做的是输出每一行的每一个元素。

如果要输出一行中的每个元素,只需再次连接数组:

echo join(';', $line);

但是那时候我忽略了fgetcsv的要点,它特别有助于将这些元素分离成一个数组,以便你可以使用它们。