![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 168
|
есть книжка гостевая:
<? $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 последних сообщения, но сначала файла. т.е. позавчера вчера сегодня а надо бы (с конца файла): сегодня, вчера, позавчера. как? плиз ![]()
__________________
полосатый КОТ |
|
|||||
|
легче прочитать весь файл в массив, а потом просто три последние ячейки просмотреть. Если файл очень большой и читать весь в массив не хочется (хотя вроде особо много времени это едва ли займет, но все же...), то перематываешь на конец файла (fseek($fp, 0, SEEK_END); ), затем от туда посимвольно считываешь информацию, при получении символа "|", отделяешь предыдущие полученные символы в отдельную переменную (ячейку массива) и так до трех раз. Короче пишешь свою упрощенную функцию explode, которая действует задом-на-перед. Но все же если файл не большорй, незачем фигней страдать и легче считать его весь, а из массива выбрать последние элементы.
__________________
Flash is out there... Флэш где-то рядом... |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 168
|
но я настолько чайник, что не знаю как(((
только вот потихоньку начинаю вникать в 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]); наверное я как-то или неправильно задаю массив или его читаю. ![]()
__________________
полосатый КОТ |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 168
|
как читать с конца я понял)))
теперь думаю о том как последние три сделать, в старом варианте читает последние две и самую первую запись. $fn =file("baza_gost.dat"); $data= array_reverse($fn ); $x=count($data); for($i=0; $i<$x; $i++) { $line=explode("|", $data[$i]);
__________________
полосатый КОТ |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 168
|
всего-то:
for($i=0; $i<3; $i++) массив-то перевернут и можно просто считать первые 3 как все просто оказывается)) стоит только вдуматься и книжки почитать))) ![]()
__________________
полосатый КОТ |
|
|||||
|
Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
|
Ну вот и молодца, а ведь на сколько приятней самому проблему разрулить!
![]() |
|
|||||
|
Цитата:
только одно но, если вдруг книга твоя разрастется... эдак до размеров этого форума, что едва ли осуществимо, но все же в теории, то читаться будет весь файл, а это очень долго, поэтому логичнее прочитать лишь нужные записи, но поскольку, я думаю файл никогда у тебя не превысит размеров больше 700 кбайт примерно, то все ок.
__________________
Flash is out there... Флэш где-то рядом... |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 168
|
![]()
__________________
полосатый КОТ |
|
|||||
|
Ветеран форума
|
ненадо так делать =)
просто совет на будущее... всё выше предложеное жуткие варинты... |
![]() |
Часовой пояс GMT +4, время: 23:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|