我想单独阅读我已经使用的第一行:
:
fgets
但是现在我想读取从第2行到文件末尾的所有其他行,并将这些值放入数组中。
我搜索了类似的解决方案,但找不到任何
使用描述符
$head = fgets(fopen($file, 'r'));
$headValues = explode(',', $head);
this this使用
$fd = fopen($file, 'r');
$head = fgets($fd);
$headValues = explode(',', $head);
$data = [];
while(($str = fgets($fd)) !== false) {
$otherValues = explode(',', $str);
$data[] = $otherValues;
}
用于您关心的行并使用
fgetcsv
array_combine
每次读取的检查,以防到达EOF,然后从读取循环中拆下来。
您可以使用$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);
,
file()
:
array_shift()
So,
$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)
将包含除第一个外的所有线。
我认为每个给定的解决方案都有其弱点。不可读取。没有提供解释。没有错误处理。我试图将它们结合在一起并添加一些评论。
也许这是对OPS问题的过度设计。但是它处理了很多事情,并且可能会更深入地进入如何实施某些事情。
$lines