cake如何使用PHP只获取CSV文件的第二列


cakeHow do I get only the second column of a CSV file using PHP?

我有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 h h a

我该如何解决这个问题?

使用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);
}

看起来您打算调用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);

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

你的标题与你的问题不匹配,你想要第二列,而不是第二行。

首先,你要得到每行的第4个字符,你需要做这样的事情(未测试):

$data=fopen('test.csv','r');
while($row=fgets($data)){
   $cols =  explode(',' $row);
   echo $cols[1]."<br>'n";
}