当我执行以下代码时,我会从文件中输出一个行列表,其中包含行号.
<?php
$lines = file('C:\sm\lines.txt');
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
Run Code Online (Sandbox Code Playgroud)
现在我想象返回的数组file()将是一个简单的一维向量,我必须在我的循环中保留一个line_num变量.如何在这里工作,我得到$line_num => $line文件中每一行的关联对?
file与迭代文件指针并将文件中的每一行添加到数组实际上是相同的.你没有得到行号,而是数组中的常规数字索引.
换句话说,file是吗
function file($filename)
{
$fp = fopen($filename);
while (!eof($fp)) {
$lines[] = fgets($fp);
}
fclose($fp);
return $lines;
}
Run Code Online (Sandbox Code Playgroud)
这当然是简化的.如果您想了解具体细节,请查看
至于你能做什么
foreach ($lines as $line_num => $line) {
Run Code Online (Sandbox Code Playgroud)
见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变量.