PHP file()函数在哪里获取行号?

时间:2011-11-26 18:32:38

标签: php file-io

当我执行以下代码时,我会从文件中输出一个行列表,其中包含行号。

<?php
$lines = file('C:\sm\lines.txt');
foreach ($lines as $line_num => $line) {
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>

现在我想象file()返回的数组将是一个简单的一维向量,我必须在循环中保留一个line_num变量。如何在这里工作,我得到文件中每一行的关联对$line_num => $line

4 个答案:

答案 0 :(得分:6)

file实际上与迭代文件指针并将文件中的每一行添加到数组相同。你没有得到行号,而是数组中的常规数字索引。

换句话说,file

function file($filename) 
{
    $fp = fopen($filename);
    while (!eof($fp)) {
        $lines[] = fgets($fp);
    }
    fclose($fp);
    return $lines;
}

这当然是简化的。如果您想了解具体细节,请查看

至于你能做什么

foreach ($lines as $line_num => $line) {

请参阅http://php.net/manual/en/control-structures.foreach.php

  

foreach (array_expression as $value)   statement
  foreach (array_expression as $key => $value)   statement

     

第一个表单循环遍历array_expression给出的数组。在每次迭代中,当前元素的值被赋值为$ value,内部数组指针被提前一个(因此在下一次迭代中,您将看到下一个元素)。

     

第二种形式还会在每次迭代时将当前元素的键分配给$ key变量。

答案 1 :(得分:1)

它不是行号,而是数组中条目的索引。在这种情况下,它总是$lineNumber = $index + 1,因为file()为每一行创建一个新的索引条目

答案 2 :(得分:1)

非关联数组自动获得指定的数字数组键,即

array(
  0 => 'first item',
  1 => 'second item,
  ...
  9 => 'tenth item',
);

所以数组键最后是行号减一。

答案 3 :(得分:0)

  

现在我想象file()返回的数组将是一个简单的数组   维度向量,我必须在我的中保留一个line_num变量   环

PHP数组实际上是一个有序的映射:

http://uk.php.net/manual/en/language.types.array.php