Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как вывести номер строки при зачитывании файла массив через fail()
Форумы портала PHP.SU » » Вопросы новичков » Как вывести номер строки при зачитывании файла массив через fail()

Страниц (1): [1]
 

1. новый ученик - 10 Мая, 2017 - 17:00:14 - перейти к сообщению
Если кто сталкивался помогите пожалуйста! Есть два скрипта в одном запись в файл в другом зачитывание файла в массив и вывод. Сделал всё кроме вывода номера строки. У Борисова номер первой строки 1. В уроке нет записи разбора этой лабораторной работы. Как вывести номер строки с 1? Мне пришло в голову только зачитать ключи массива, но тогда первая строка 0. вторая 1. Думал как записать номер строки в строку файла, но не нашёл решения... Вот то что сделано. Пишет и выводит вроде всё правильно за исключением номера строки.
PHP:
скопировать код в буфер обмена
  1. // Здесь пишем в файл.
  2. if(isset($_SESSION['loget'])){
  3. $dt =  date("[d-m-Y H:i:s]");
  4. $page = $_SERVER['REQUEST_URI'];
  5. $ref = $_SERVER['HTTP_REFERER'];
  6. $path = "$dt | $ref | $page\n";
  7. file_put_contents("log/PATH_LOG", "$path", FILE_APPEND);
  8. $_SESSION['loget']= "log/PATH_LOG";
  9. }
  10. //Здесь выводим.
  11. if( is_file($_SESSION['loget']) ){
  12.     $log = file($_SESSION['loget']);
  13.     foreach($log as $key =>$lines){
  14.         echo "$key . $lines <br />";
  15.     }
  16. }
2. новый ученик - 10 Мая, 2017 - 21:07:39 - перейти к сообщению
Спасибо что никто не ответил! Я сам нашёл ответ, который оказался элементарным. В скрипте вывода нужно инкрементировать ключ вот так и всё заработало.
session_start();
if( is_file($_SESSION['loget']) ){
//echo "Файл существует";
$log = file($_SESSION['loget']);
foreach($log as $key =>$lines){
echo ++$key." . $lines <br />";
}
}
3. новый ученик - 15 Июня, 2017 - 13:52:57 - перейти к сообщению
новый ученик пишет:
Спасибо что никто не ответил! Я сам нашёл ответ, который оказался элементарным. В скрипте вывода нужно инкрементировать ключ вот так и всё заработало.
session_start();
if( is_file($_SESSION['loget']) ){
//echo "Файл существует";
$log = file($_SESSION['loget']);
foreach($log as $key =>$lines){
echo ++$key." . $lines <br />";
}
}

Работа над ошибками. Так будет правильно. А сессия здесь вообще не нужна.
Здесь пишем файл.
$dt = time();// Время записи
$page = $_SERVER['REQUEST_URI']; // Куда переходим
$ref = $_SERVER['HTTP_REFERER']; // Откуда переходим
$path = "$dt|$page|$ref"; // Формируем строку для записи в файл
file_put_contents("log/".PATH_LOG, "$path\n", FILE_APPEND); // Делаем запись в файл

А здесь выводим записи файла.
//Проверяем наличие файла
if(is_file("log/".PATH_LOG) ){
// Зачитываем файл в массив
$file = file("log/".PATH_LOG);
echo "<ol>";
foreach($file as $line){
//Присваиваем запись в переменные по разделителю
list($dt, $page, $ref) = explode("|", $line);
// Трансформируем метку времени
$dt = date("d-m-Y H:i:s", $dt);
// Выводим записи файла
echo <<<OUT
<li>
[$dt]: $ref -> $page
</li>
OUT;
}
echo "</ol>";
}

 

Powered by ExBB FM 1.0 RC1