Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удаление последний строки из блокнота
 
 автор: Ванек2010   (27.02.2012 в 13:57)   письмо автору
 
 

Подскажите такую вещь.
Есть блокнот содержащий 1000 строк
1||23||5454||545423||2311||5454
8||74||5444||465423||6781||5344 ...

Необходимо, при достижении 1001 строки удалить последнюю(внизу) и добавить новую(вверху).
Проще говоря в блокноте должна быть последняя 1000 записей.

Как добавить знаю, а вот как удалить правильно (с наименьшим поеданием ресурсов) не совсем..

  Ответить  
 
 автор: Lotanaen   (27.02.2012 в 13:59)   письмо автору
 
   для: Ванек2010   (27.02.2012 в 13:57)
 

А где хранятся строки в файле или в БД?

  Ответить  
 
 автор: Ванек2010   (27.02.2012 в 14:00)   письмо автору
 
   для: Lotanaen   (27.02.2012 в 13:59)
 

в .txt блокноте

  Ответить  
 
 автор: cheops   (27.02.2012 в 14:02)   письмо автору
 
   для: Ванек2010   (27.02.2012 в 13:57)
 

Содержимое отображается пользователю или вы используете его внутри программы? Т.е. так ли важно выдерживать прямой порядок (важный при отображении) следования записей?

  Ответить  
 
 автор: Ванек2010   (27.02.2012 в 14:03)   письмо автору
 
   для: cheops   (27.02.2012 в 14:02)
 

Показывается пользователям, да порядок важен, новые строки должны быть сверху

  Ответить  
 
 автор: cheops   (27.02.2012 в 14:07)   письмо автору
 
   для: Ванек2010   (27.02.2012 в 14:03)
 

Самое простое (но требовательное к памяти) решение, это открыть файл при помощи функции file(), к полученному массиву добавить в начало новый элемент, посчитать количество элементов и все больше 1000 удалить. После чего объединить массив в строку при помощи implode() и записать в файл. Если объем файла не велик - все будет работать как часы.

  Ответить  
 
 автор: Ванек2010   (27.02.2012 в 14:12)   письмо автору
 
   для: cheops   (27.02.2012 в 14:07)
 

Можно по подробнее на счет "и все больше 1000 удалить".

  Ответить  
 
 автор: cheops   (27.02.2012 в 14:17)   письмо автору
 
   для: Ванек2010   (27.02.2012 в 14:12)
 

В цикле прогоните массив, и когда счетчик цикла достигнет 1000 ко всем последующим элементам массива примените конструкцию unset(). На выходе у вас будет массив ровно с 1000 элементов.

  Ответить  
 
 автор: Ванек2010   (27.02.2012 в 14:20)   письмо автору
 
   для: cheops   (27.02.2012 в 14:17)
 

спасибо, но думал, что можно будет уйти от прогонки 1000 раз.

  Ответить  
 
 автор: cheops   (27.02.2012 в 14:27)   письмо автору
 
   для: Ванек2010   (27.02.2012 в 14:20)
 

Можно и уйти, если вы знаете, что у вас 1000 строк и вы добавляете в начало одну строку, то и удалить вам нужно одну строку из конца и её индекс будет 999, т.е. вам фактически нужно произвести одно удаление unset($arr[999]).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования