使用PHP如何转换csv文件

时间:2014-11-24 11:58:12

标签: php csv

我有一个csv文件,其中标题行在第1行而不是第0行如何在这种情况下转换csv。我已经看到转换csv文件的好版本,其中标题行在行[0]为

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]为标题行的情况下协助我。

3 个答案:

答案 0 :(得分:1)

出于兴趣,如果标题位于第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
}

答案 1 :(得分: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;
            }

答案 2 :(得分:0)

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

$file = fopen("path/to/csv","r");
$list=array();

//saving in list 
while ($row=fgetcsv($file)) {
  $list[]=$row;
}

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