当我执行以下代码时,我会从文件中输出一个行列表,其中包含行号。
<?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
?
答案 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数组实际上是一个有序的映射: