Another gotcha that is not mentioned: If you have flag SKIP_EMPTY set, then key() will not reflect actual line numbers as empty lines are not accounted.
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::key — Получает номер строки
Получает номер текущей строки.
Замечание:
Этот номер может отличаться от реального положения файлового указателя, когда читаются строки фиксированной длины с заданием этой длины методом SplFileObject::setMaxLineLen().
У этой функции нет параметров.
Возвращает номер текущей строки файла.
Пример #1 Пример использования SplFileObject::key()
<?php
$file = new SplFileObject("lipsum.txt");
foreach ($file as $line) {
echo $file->key() . ". " . $line;
}
?>
Вывод приведённого примера будет похож на:
0. Lorem ipsum dolor sit amet, consectetur adipiscing elit. 1. Duis nec sapien felis, ac sodales nisl. 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Пример #2 Пример использования SplFileObject::key() при задании длины строки методом SplFileObject::setMaxLineLen()
<?php
$file = new SplFileObject("lipsum.txt");
$file->setMaxLineLen(20);
foreach ($file as $line) {
echo $file->key() . ". " . $line . "\n";
}
?>
Вывод приведённого примера будет похож на:
0. Lorem ipsum dolor s 1. it amet, consectetu 2. r adipiscing elit. 3. 4. Duis nec sapien fel 5. is, ac sodales nisl 6. . 7. Lorem ipsum dolor s 8. it amet, consectetu 9. r adipiscing elit.
Another gotcha that is not mentioned: If you have flag SKIP_EMPTY set, then key() will not reflect actual line numbers as empty lines are not accounted.