>我有一个 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