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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Чтение из файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как читать с конца?
ucob
Отправлено: 22 Января, 2011 - 08:20:52
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Здравствуйте. Не подскажете, как сделать, чтобы вывести последние 10 строчек из файла, начиная с последней.


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
duk
Отправлено: 22 Января, 2011 - 10:42:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Февр. 2010  
Откуда: Москва


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $arr=file('users.dat');
  3. $count=count ($arr);
  4. for ($i=$count-10; $i<$count; $i++)
  5. {
  6.    echo $arr[$i].'<br>';
  7. }
  8.  
  9.  

(Добавление)
вернее,

PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i=$count-1; $i>=$count-10; $i--)
  3.  
 
 Top
HotBird
Отправлено: 22 Января, 2011 - 14:11:08
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




Лучше так
PHP:
скопировать код в буфер обмена
  1. for ($i=$count-1; $i>=$count-11; $i--)


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
ucob
Отправлено: 22 Января, 2011 - 19:42:49
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




HotBird Что то он выводит только последнюю строчку, а больше нет.


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
HotBird
Отправлено: 22 Января, 2011 - 21:51:22
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




Приведите здесь пожалуйста фрагмент кода для реализации этой задачи, так легче найти ошибку, пока что скрипты телепатичкски не читаю.


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
ucob
Отправлено: 22 Января, 2011 - 21:55:41
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Вот код:

$arr = file('music/links.txt');
$count = count ($arr);
for ($j=$count-1; $j>=$count-11; $j--)
$last = $arr[$j].'<br>';

А для вывода ставлю $last

переменная $i у меня занята
(Добавление)
А при $j>=$count-11 выводит 11 с конца


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
HotBird
Отправлено: 22 Января, 2011 - 22:41:49
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




Ну да, при вашей реализации так и будет. Вы в цикле перебираете строки и каждый раз переменной $last присваиваете значение следующей строки, а потом выводите переменную $last, значение которой строка, которая последня присутствовала в цикле.
Вам же duk написал:
echo $arr[$j].'<br>';
а если вам надо запомнить последнеё значение из цикла то сделайте так:
echo $last = $arr[$j].'<br>';

(Отредактировано автором: 22 Января, 2011 - 22:42:32)



-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
ucob
Отправлено: 22 Января, 2011 - 22:48:41
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




HotBird Я в php новичек, у меня чет не получается. Просто выводит: = file('music/links.txt'); = count (); for (=-1; >=-11; --) echo .'
';


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
HotBird
Отправлено: 22 Января, 2011 - 23:13:17
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




ucob пишет:
Просто выводит: = file('music/links.txt'); = count (); for (=-1; >=-11; --) echo .'
';

Что-то я такого не встречал, похоже причина далеко не в самом цикле, навеное придется или выложить весь код скрипта или лучше прикрепить сюда полный файл.


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
ucob
Отправлено: 22 Января, 2011 - 23:19:59
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




HotBird Вот страница.
Скачать файл: index.php
Скачан раз: 113


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
JustUserR
Отправлено: 23 Января, 2011 - 11:47:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




duk пишет:
$arr=file('users.dat');
В общем случае при использовании заданного текстового файла в качестве локальной базы данных которая может обеспечить хранения значительного количества информационных полей указанный вариант является недопустимым - вместо него необходимо оуществить открутие дескриптора файла и его перевод в конец записанных данных на основе функции fseek - после чего необходимо обеспечить последовательное считывание блоков байт файла с анализом разделителей записей


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ucob
Отправлено: 23 Января, 2011 - 18:30:42
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




JustUserR Так мне кто нить поможет.


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
HotBird
Отправлено: 23 Января, 2011 - 19:19:35
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




Посмотрел толькочто файл. Сделайте цикл так:
$arr = file('music/links.txt');
$count = count ($arr);
$last='';
for ($j=$count-1; $j>=$count-11; $j--)
$last .= $arr[$j].'<br>';

тогда можете для вывода использовать переменную $last.


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
ucob
Отправлено: 23 Января, 2011 - 19:44:57
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




HotBird Чет ни че не выводит...


-----
Новый год, Новые знания. Моя первая работа на PHP: http://mp3hiti[dot]ru
 
 Top
HotBird
Отправлено: 23 Января, 2011 - 21:49:13
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




Вот фрагмент кода из вашего файла, с вырезаным ненужным в даном случае кодом.
<?php

//$arr = file('music/links.txt');
$arr=range(0,99);//допустим файл имеет 100 строк, и создаётся масив с ключами от 0 до 99
$count = count ($arr);
$last='';
for ($j=$count-1; $j>=$count-11; $j--)
$last .= $arr[$j].'<br>';


$goodout = <<<EOF
<!-- <Содержиомое> -->
$last
<!-- <Содержиомое> -->
EOF;

// Вывод результата
echo $goodout;

?>

Цикл прекрасно работает и выводит как надо:
99
98
97
96
95
94
93
92
91
90
89

Скопируйте этот код в отдельный файл php и выполните. Просто не понимаю как может у вас ничего не выводить.


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB