使用PHP如何转换csv文件


Using PHP how to convert csv file

>我有一个 CSV 文件,其中标题行在第 1 行而不是第 0 行,在这种情况下如何转换 CSV。我见过将标题行位于行[0]的csv文件转换为的良好版本

function csv_to_array($filename='', $delimiter=',')
{
if(!file_exists($filename) || !is_readable($filename))
    return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
    while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
    {
        if(!$header)
            $header = $row;
        else
            $data[] = array_combine($header, $row);
    }
    fclose($handle);
}
return $data;
}

请有人在行[1]是标题行的情况下帮助我。

你可以这样做:

            function csv_to_array($filename='', $delimiter=',')
            {
            if(!file_exists($filename) || !is_readable($filename))
                return FALSE;
            $header = NULL;
            $data = array();
            if (($handle = fopen($filename, 'r')) !== FALSE)
            {
                $i=0;
                while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
                {
                    if($i==0)
                    {
                      $i++;
                      continue;   //SKIP FIRST ROW
                    }
                    if(!$header)
                        $header = $row;
                    else
                        $data[] = array_combine($header, $row);
                }
                fclose($handle);
            }
            return $data;
            }

出于兴趣,如果标题在第 1 行,第 0 行是什么? 是空白的吗?

无论如何:

$i = 0;
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
    $i++;
    if ($i == 1) {
        continue; // Or do something else?
    } elseif ($i == 2) {
        $header = $row; // Get the headers on row 1
    } else {
        $data[] = $row; // Get the data on row 2 and above
    }
}

或者:

while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
    $data[] = $row;
}
var_dump($data[1]); // This is the header
for ($i = 2, $j = count($data); $i < $j; $i++) {
    var_dump($data[ $i ]); // Each row of data
}

您可以使用 fgetcsv 并将结果存储到这样的数组中

$file = fopen("path/to/csv","r");
$list=array();
//saving in list 
while ($row=fgetcsv($file)) {
  $list[]=$row;
}

然后你可以运行一个 for 循环开始$i = 2