如何从PHP中的文本文件中读取特定行

时间:2018-02-10 20:25:29

标签: php file line

我有一个包含很多行的txt文件,每行中的值都用逗号分隔。

我想单独阅读第1行,我已经使用fgets

$head = fgets(fopen($file, 'r'));
$headValues = explode(',', $head);

但是现在我想从第2行读取每个其他行直到文件结尾并将这些值放入数组中。

我搜索了类似的解决方案但找不到任何

3 个答案:

答案 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将包含除第一行以外的所有行。