Отображение информации и ее сортировка

Автор: content Воскресенье, Апрель 8th, 2012 Нет комментариев

Рубрика: Язык PHP

Привет! Вы знаете, очень часто встречаю на форумах вопросы типа: [Как мне сделать чтобы записи из файла отображались не с первой по последнюю, а наоборот, в обратном порядке?]. Уже ответов пять наверное написал… Люди совсем не хотят думать, хотя делается это элементарно!
Собственно, показать записи в обратном порядке можно двумя способами:
1. Записать информацию наоборот
2. Записывать информацию обычно, а показывать наоборот

У каждого из способов есть свои особенности, о которых я расскажу далее. Итак, сначала первый способ. Еще на процессе записи скриптом информации в файл пишем вот что:

1
2
3
4
5
6
7

<?php
$fh = fopen(«file.txt», «r»);
$all_notes = fread($fh, filesize(«file.txt»));
fclose($fh);
$fh2 = fopen(«file.txt», «w»);
fwrite($fh2, $new_note);
fwrite($fh2, $all_notes);
fclose($fh2);
?>

file.txt – имя файла с записями;
$new_note – новая запись;
$all_notes – записи, хранящиеся в файле.
Суть в том, что мы открываем файлик с записями (при этом выставляем параметр [Только чтение]) и считываем все его содержимое в переменную (строчка 3). А потом опять открываем этот же файлик, но уже с другим параметром ([Только запись] — все содержимое файла удаляется), записываем в него новую запись, а потом все старые. Вот вам и обратная запись.
Сей способ рекомендуется применять, когда данные занимают больше одной строчки, например стихи или анекдоты. В этом случае данный скрипт подходит почти идеально.
Но бывают случаи, когда не принципиально, в каком порядке расположены записи в файле. В этом случае можно организовать обратный вывод (Вывод, а не запись!) таким образом:

1
2
3

<?php
$fh = file(«file_name.txt»);
$fh = array_reverse($fh);
for ($i=0; $i<count($fh); $i++) echo $fh[$i];
?>

Считываем содержимое файла в массив, затем с помощью функции array_reverse() переворачиваем его задом-наперед (сверху вниз / наизнанку / шиворот-навыворот ? ), и с помощью цикла выводим. А можно не переворачивая, просто настроить сам цикл на обратный вывод:

1
2

<?php
$fh = file(«file_name.txt»);
for ($i = count($fh); $i>0; $i—) echo $fh[$i-1];
?>

Здесь тоже все строки файла считываем в массив, а потом просто выводим его наоборот с помощью цикла. Два последних скрипта нужно размещать при непосредственном выводе записей для пользователя. Использовать его нужно, когда не важно, как записаны записи в файл, т.е. например в скрипте комментариев, гостевых книг, лент новостей и т.д. Короче, если в файле информация хранится в виде (грубо):
Миша || www.cngroup.ru || Отличная статья! Мне понравилась!
Вова || www.cngroup.ru || О, Мишка! Да ты дописал свою статью! Свершилось! :)
Миша || www.cngroup.ru || Да, дописал :) . Пойдет?

То для вас подойдет второй вариант.
Надеюсь, эта статья поможет вам, и одинаковых вопросов на форумах РуНета станет меньше? . В следующий раз, если увижу подобный вопрос, дам ссылку на наш сайт на страничку со статьей. Осталось только дождаться, когда mr.dsrtmn допишет движок. Вова, я, пользуясь своим положением автора и главреда обращаюсь к тебе от имени редакции с просьбой запустить наконец-то сайтик в сеть! Думаю, я выразил заодно и общее мнение наших читателей.
Вот в принципе и все! С уважением, Mostom.

Автор: Mostom

Источник: http://www.php.su/articles/?cat=examples&page=015

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты