Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从CSV文件中提取标题行-代码说明_Php_Csv - Fatal编程技术网

PHP从CSV文件中提取标题行-代码说明

PHP从CSV文件中提取标题行-代码说明,php,csv,Php,Csv,我正在学习一个教程,遇到了需要解释的代码 此模板php代码用于解析csv文件并用结果填充$data关联数组 <?php $header = false; $data = []; $file = fopen($filename, 'r'); while(!feof($file)) { $row = fgetcsv($file, 0, ','); if($row == [NULL] || $row === FALSE) { continue; } if(!$head

我正在学习一个教程,遇到了需要解释的代码

此模板php代码用于解析csv文件并用结果填充$data关联数组

<?php

 $header = false;
 $data = [];
 $file = fopen($filename, 'r');
 while(!feof($file)) {
   $row = fgetcsv($file, 0, ',');
   if($row == [NULL] || $row === FALSE) { continue; }
   if(!$header) {
     $header = $row;
   } else {
     $data[] = array_combine($header, $row);
   }
 }
 fclose($file);
除本节外,我了解所有内容:

if(!$header) {
 $header = $row;
}
我很难理解php代码是如何识别哪些是标题行,哪些不是。
请有人解释一下,谢谢。

您的CSV文件的第一行是标题。 为了确保此标题不是作为正常行读取,他在开头使用“$header=false;”

在第一次迭代后,他更新值:

if(!$header) {
    $header = $row;
}

$row的值已填充,因此本质上为true

$header=false最初。第一行是传入的,
$header
为false,因此
$header
将设置为
$row
。在下一次迭代中,
$header
将不再为false,因此
continue
只是第一行。在循环的第一次迭代中,变量$header未设置(!$header),因此脚本会设置它($header=$row)。在第二次迭代中,设置了$header,因此其他所有内容都添加到$data[]。就这样。欢迎来到Stackoverflow!
if(!$header) {
    $header = $row;
}