При создании блока "Афоризм дня" или ленты "Анекдоты" часто встает задача выборки из текстового файла случайных строк. Для решения данной задачи необходимо использование функции rando, которая имеет следующий синтаксис:
int rand( [int rain, int max])
Функция генерирует случайное целое число между двумя целочисленными параметрами лил и так. Если необязательные параметры лил и max не указаны, число выбирается из диапазона [0; RAND_MAX (32768)].
Каждому номеру, который обычно называется индексом, соответствует строка, называемая значением. Одной из насущных задач является определение наличия в файле заданного индекса и вывод соответствующего ему значения, если такой индекс существует. Данную проблему решает скрипт из листинга 6.32.
При таком подходе при увеличении объема файла время на поиск максимального значения будет расти, поэтому целесообразно хранить максимальный индекс элемента в отдельном файле, переписывая его при каждом добавлении уникального индекса в файл.
После ввода в форму номера записи страница перегружается, и обработчик, следующий сразу за формой, помещает содержимое файла в массив $iines. Если массив содержит элемент с индексом, переданным из первой формы, то происходит вывод второй формы second, содержащей текстовую область для редактирования записи (рис. 6.6). Кроме этого, форма содержит скрытое поле index, через которое передается индекс редактируемой записи.