将csv中第一列中具有相同单词的所有行分组

  • 本文关键字:单词 csv 一列 php file csv
  • 更新时间 :
  • 英文 :


我有两列在我的csv文件:first_column和second_column。我想把第二列中的所有行分组成一个字符串,用"分隔,如果它们在第一列中都有相同的单词,那么将它们输出到一个文本文件中。

first_column   second_column
a              Chris
a              Jake
a              Paula
b              Anita
b              Lionel
b              Sheila
所需输出

a: Chris, Jake, Paula
b: Anita, Lionel, Sheila

这是我尝试过的。我似乎只收到了第二栏的第一封信。任何提示都可以。

$csv_file = fopen("test.csv", "r");
$text_file = fopen("test.txt","w");
$data = array();
if ($csv_file) 
{
    while (($line = fgets($csv_file)) !== false) 
    {
        $column_1 = $line[0];
        $column_2 = $line[1];
        if (!empty($column_1)) 
        {
            $data [$column_1] = column_2;
        }
    }
    fclose($csv_file);
    fclose($text_file);
} 
else 
{
    // error opening the file.
}
//print_r($data);

这应该可以为您工作:

在这里,我首先将.csv文件放入file()数组中。然后循环遍历每一行并创建一个数组,其中第一列是键,第二列是子数组的值。

在此之后,您可以循环通过您创建的数组和implode()每个子数组的关键到您想要的预期行。然后你可以用file_put_contents()保存数据到你的.txt文件。

<?php
    $csv_file = "test.csv";
    $text_file = "test.txt";
    $lines = file($csv_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    array_shift($lines);
    foreach($lines as $line) {
        list($key, $value) = explode(",", $line);  //Change your .csv delimiter here, if you use something else than ,
        $data[$key][] = $value;
    }
    foreach($data as $key => $arr)
        $content[] = $key . ": " . implode(",", $arr) . PHP_EOL;
    file_put_contents($text_file, $content);
?>

将结果存储在数据数组中,然后将其回写为文本文件应该可以工作。

$csv_file = fopen("test.csv", "r");
$text_file = fopen("test.txt","w");
$data = array();
if ($csv_file) 
{
  while (($line = fgets($csv_file)) !== false) 
  {
     $column_1 = $line[0];
     $column_2 = $line[1];
     if (!isset($data[$column_1])) 
     {
        $data[$column_1] = column_2
     } else {
        $data[$column_1] = $data[$column_1] .',' . $column_2
     }
  }
   foreach($data as $k=>$d ){
      fputs($text_file, "$k: $d") ;
  }
   fclose($csv_file);
   fclose($text_file);
} 
else 
{
  // error opening the file.
}

相关内容

  • 没有找到相关文章

最新更新