我有csv文件(test.csv)并且文本如下:
1,maly,maly(),f,df
2,cheata,aaa,df,df
3,cheata,df,df,df
4,maly,fc,cfv,f
5,maly,df,fg,fg
6,chantha,fc,gf,fg
7,chantha,gh,a,g
8,David,fgfd,dfg,g
我想要的是什么:
我想只显示:maly cheata chantha David
。对于有两个或更多相同的名称,只需要一个。我有如下的PHP代码:
$c=0;
$data=fopen('test.csv','r');
while($row=fgets($data)){
if($c!=0){
echo $row[3]."<br>\n";
}
$c++;
}
问题是
它不显示我想要的内容。它显示
h h a a h h a
我该如何解决这个问题?
答案 0 :(得分:3)
您似乎打算拨打fgetcsv
而不是fgets
。此外,name
索引将是1
,而不是3
:
<?php
$file = fopen('test.csv', 'r');
while($row = fgetcsv($file)) {
if (isset($row[1])) {
echo $row[1], "\n";
}
}
fclose($file);
答案 1 :(得分:3)
使用fgetcsv
代替fgets
。
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if (isset($data[1])) {
echo $data[1] . "<br>\n";
}
}
fclose($handle);
}
答案 2 :(得分:0)
file
方法返回数组中的所有行。 explode
方法按特定分隔符分割一行。
$lines = file($file_name);
$fields = array();
foreach ($lines as $line) {
$cells = explode(',', $line);
$fields[] = $cells[1];
}
echo "<pre>";
print_r($fields);
echo "</pre>";
答案 3 :(得分:0)
你的标题与你的问题不符,你想要第二列,而不是行。
首先,你得到每一行的第四个字符你需要做这样的事情(未经测试):
$data=fopen('test.csv','r');
while($row=fgets($data)){
$cols = explode(',' $row);
echo $cols[1]."<br>\n";
}