我有一个包含很多行的txt文件,每行中的值都用逗号分隔。
我想单独阅读第1行,我已经使用fgets
:
$head = fgets(fopen($file, 'r'));
$headValues = explode(',', $head);
但是现在我想从第2行读取每个其他行直到文件结尾并将这些值放入数组中。
我搜索了类似的解决方案但找不到任何
答案 0 :(得分:3)
只需使用描述符
$fd = fopen($file, 'r');
$head = fgets($fd);
$headValues = explode(',', $head);
$data = [];
while(($str = fgets($fd)) !== false) {
$otherValues = explode(',', $str);
$data[] = $otherValues;
}
答案 1 :(得分:2)
这会对您关注的行使用fgetcsv
,并使用array_combine
将标题和行数据放在一起。
$fh = fopen($file, 'r');
$headValues = fgetcsv($fh);
$data = [];
while (true) {
if ( ($values = fgetcsv($fh)) === false ) {
break;
}
$data[] = array_combine($headValues, $values);
if ( fgets($fh) === false ) {
break;
}
}
fclose($fh);
print_r($data);
在每次读取时检查是否已达到EOF,然后突破读取循环。
答案 2 :(得分:1)
您可以使用file()
,array_map()
和array_shift()
:
$lines = file($file) ; // get file as array.
$lines = array_map(function($l){ return explode(',', $l); }, $lines);
$headValues = array_shift($lines); // get first values (removed from $lines)
因此,$lines
将包含除第一行以外的所有行。