![]() |
как вывести данные из конца файла?
есть книжка гостевая:
<? $fn="baza_gost.dat"; $data=file($fn); $x=count($data); $z=$x-3; for($i=$z; $i<$x; $i++) { $line=explode("|", $data[$i]); echo($line[1]); echo($line[2]); echo($line[3]); } ?> выводит 3 последних сообщения, но сначала файла. т.е. позавчера вчера сегодня а надо бы (с конца файла): сегодня, вчера, позавчера. как? плиз :confused: |
легче прочитать весь файл в массив, а потом просто три последние ячейки просмотреть. Если файл очень большой и читать весь в массив не хочется (хотя вроде особо много времени это едва ли займет, но все же...), то перематываешь на конец файла (fseek($fp, 0, SEEK_END); ), затем от туда посимвольно считываешь информацию, при получении символа "|", отделяешь предыдущие полученные символы в отдельную переменную (ячейку массива) и так до трех раз. Короче пишешь свою упрощенную функцию explode, которая действует задом-на-перед. Но все же если файл не большорй, незачем фигней страдать и легче считать его весь, а из массива выбрать последние элементы.
|
я уже понял что в моем случае лучше массив использовать+
но я настолько чайник, что не знаю как((( :confused:
только вот потихоньку начинаю вникать в PHP. нашел даже такую функцию как: array_reverse пытаюсь ее использовать-ничего не получается выводиться только три пустых поля: $input=array("baza_gost.dat"); $fn = array_reverse($input); $x=count($fn); $z=$x-3; for($i=0; $i<$x; $i++) { $line=explode("|", $data[$i]); наверное я как-то или неправильно задаю массив или его читаю. :confused: |
ну я и тормоз))))
как читать с конца я понял)))
теперь думаю о том как последние три сделать, в старом варианте читает последние две и самую первую запись. :) $fn =file("baza_gost.dat"); $data= array_reverse($fn ); $x=count($data); for($i=0; $i<$x; $i++) { $line=explode("|", $data[$i]); |
вот и с последними все понятно)))
всего-то:
for($i=0; $i<3; $i++) массив-то перевернут и можно просто считать первые 3 как все просто оказывается)) стоит только вдуматься и книжки почитать))) :D |
Ну вот и молодца, а ведь на сколько приятней самому проблему разрулить! ;)
|
Re: вот и с последними все понятно)))
Цитата:
|
спасибо за участие)
:) :)
|
ненадо так делать =)
просто совет на будущее... всё выше предложеное жуткие варинты... |
| Часовой пояс GMT +4, время: 23:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.