【问题标题】:Looping through a csv with fgetcsv使用 fgetcsv 循环遍历 csv
【发布时间】:2014-11-11 12:12:02
【问题描述】:

我有一个包含 3 列的 csv 文件:电子邮件地址、名字和姓氏。我已经到了可以使用以下代码打印出数组的阶段:

<?php
$file = fopen("testEmails.csv","r");

while(! feof($file))
{
print_r(fgetcsv($file));
}

fclose($file);
?>

这将打印数组,因此一行中的每个字段。我希望它打印的纯粹是该行第一列中的值。如何做到这一点,fgetcsv 上的文档对我来说似乎很粗略(相对初学者)。

谢谢。

【问题讨论】:

标签: php csv fgetcsv


【解决方案1】:

fgetcsv() 文档中的第一个示例包含您需要的内容。

$file = fopen("testEmails.csv","r");

while (($data = fgetcsv($file)) !== FALSE)
{
    echo "email address " . $data[0];
}

fgetcsv() 返回代表列的数字索引数组,因此您只想打印第一列。

【讨论】:

  • 不要使用文件名代替文件,而是将所有这些代码包装在 if (($file = fopen("file.csv", "r")) !== FALSE) {} 中,如链接上的示例所示
  • 太棒了!顺利地为我工作。谢谢科迪·考兰
【解决方案2】:

你可以试试echo,而不是print_r

<?php
$file = fopen("testEmails.csv","r");

while(! feof($file))
{
echo fgets($file). "<br />";
}

fclose($file);
?>

【讨论】:

    【解决方案3】:

    你已经很接近了。你可以只打印第一列,因为你已经有了数组。

    但是,您也可以使用fgetcsv 本身作为循环的控制变量。

    while (($array = fgetcsv($file)) !== FALSE) {
          print_r($array[0]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 2015-08-17
      • 2020-06-25
      • 2021-03-04
      • 2021-01-22
      相关资源
      最近更新 更多