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