Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удаление отработанных элементов массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
FaSTeR
Отправлено: 24 Февраля, 2011 - 00:31:38
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Есть файл text.txt в нем большой объем текста, разделенных абзацами, предложениями и тд. По тексту раскидан знак "|".

Задача вывести на экран части текста до знака "|" и удалить то что вывелось.

Вывести я вывел, все работает так как мне нужно, но вот как удалить то что вывелось ума не приложу. Нужно чтоб в цикле после каждого круга удалялось то что вывелось на экран.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. // Получаем содержимое файла в виде одной строки
  3. $text = file_get_contents ( 'C:/poster/text.txt' );
  4. // запускаем цикл
  5. for ($i=0; $i<6; $i++)
  6. {
  7. // выдераем нужный элемент с массива
  8. $textvpost = explode("|", $text);
  9. // выводим на экран
  10. echo $textvpost[$i];
  11. echo '<br>';
  12. echo '<br>';
  13.  
  14. // удаляем строку в text.txt вот это и не работает потому что объединяет все элементы массива в 1 строку и ее удаляет (тоесть удаляет ВСЕ )
  15. $write = implode("",$text);
  16.   $fp = fopen ("C:\\poster\\text.txt", "w+");
  17.   fwrite ($fp, $write);
  18.   fclose ($fp);
  19. }
  20. ?>


Подскажите плз в каком направлении рыть Закатив глазки

(Отредактировано автором: 24 Февраля, 2011 - 00:39:46)

 
 Top
Toxa
Отправлено: 24 Февраля, 2011 - 01:08:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


Помог: 8 раз(а)

[+]


а что значит удалить? Боюсь вы плохо представляете себе принципы работы php.


-----
Удобный сервис для хранения файлов
 
 Top
OrmaJever Модератор
Отправлено: 24 Февраля, 2011 - 01:22:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




FaSTeR пишет:
Задача вывести на экран части текста до знака "|" и удалить то что вывелось.

Вот написал конкретно как просили, но это _говнокод_!
PHP:
скопировать код в буфер обмена
  1. $file = 'file_name.txt';
  2. $count = substr_count(file_get_contents($file), '|');
  3. for($i=0;$i<=$count;$i++)
  4. {
  5.         $str = file_get_contents($file);
  6.         $x = explode('|', $str);
  7.         echo $x[0].'<br>';
  8.         if(strpos($str, '|') !== false) file_put_contents($file, substr($str, strpos($str, '|')+1));
  9.         else file_put_contents($file, '');
  10. }

Такделать нету смыла потому что скрипт выполняется за пару мс с всеровно не видно что оно по одному выводит икдаляет, а нагрузка большая поэтому вотупрощёный вариант
PHP:
скопировать код в буфер обмена
  1. $str = file_get_contents('file_name.txt');
  2. file_put_contents('file_name.txt', '');
  3. $x = explode('|', $str);
  4. for($i=0;$i<count($x);$i++)
  5.         echo $x[$i].'<br>';

выводит так же, но нагрузка намного меньше


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
FaSTeR
Отправлено: 24 Февраля, 2011 - 09:18:22
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




OrmaJever пишет:

Такделать нету смыла потому что скрипт выполняется за пару мс с всеровно не видно что оно по одному выводит икдаляет, а нагрузка большая поэтому вотупрощёный вариант


К сожалению ни один код мне не подходит, так как мне нужно чтоб цикл отрабатывался n количество раз (например 2 раза, или 10 раз), а не полностью.

Сейчас в вашем примере он делит полностью массив на элементы и все элементы выводит, после чего удаляет всю инфу в файле.
Мне же нужно вывести например 2 первых элемента массива и удалить ТОЛЬКО эти 2 элемента.
(Добавление)
Toxa пишет:
а что значит удалить? Боюсь вы плохо представляете себе принципы работы php.


в коде моего первого поста блок:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $write = implode("",$text);
  2.   $fp = fopen ("C:\\poster\\text.txt", "w+");
  3.   fwrite ($fp, $write);
  4.   fclose ($fp);

удаляет 1 отработанную строку, но так как вначале кода я вытягиваю текстовый файл в 1 строку, то он удаляет полностью всю инфу в файле.

Мне 2не понятен сам алгоритм того что я хочу сделать...
То есть у меня есть 1 строка с нужными знаками в ней, как мне удалить например с начало строки и до этого знака

(Отредактировано автором: 24 Февраля, 2011 - 09:19:49)

 
 Top
Stierus Супермодератор
Отправлено: 24 Февраля, 2011 - 12:23:54
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




если вся проблема в "удаляет 1 отработанную строку, но так как вначале кода я вытягиваю текстовый файл в 1 строку, то он удаляет полностью всю инфу в файле" - то

надо заменить на
 
My status
 Top
OrmaJever Модератор
Отправлено: 24 Февраля, 2011 - 12:48:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




FaSTeR пишет:
Мне же нужно вывести например 2 первых элемента массива и удалить ТОЛЬКО эти 2 элемента.

ну так даже проще.
PHP:
скопировать код в буфер обмена
  1.  
  2. for($i=0;$i<2;$i++)
  3. {
  4.         $str = file_get_contents($file);
  5.         $x = explode('|', $str);
  6.         echo $x[0].'<br>';
  7.         if(strpos($str, '|') !== false) file_put_contents($file, substr($str, strpos($str, '|')+1));
  8.         else file_put_contents($file, '');
  9. }


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
FaSTeR
Отправлено: 27 Февраля, 2011 - 09:04:52
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




OrmaJever пишет:
FaSTeR пишет:
Мне же нужно вывести например 2 первых элемента массива и удалить ТОЛЬКО эти 2 элемента.

ну так даже проще.
PHP:
скопировать код в буфер обмена
  1.  
  2. for($i=0;$i<2;$i++)
  3. {
  4.         $str = file_get_contents($file);
  5.         $x = explode('|', $str);
  6.         echo $x[0].'<br>';
  7.         if(strpos($str, '|') !== false) file_put_contents($file, substr($str, strpos($str, '|')+1));
  8.         else file_put_contents($file, '');
  9. }


Огромнейшее спасибо!!! То что доктор прописал Радость
 
 Top
JustUserR
Отправлено: 27 Февраля, 2011 - 15:27:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




FaSTeR пишет:
Задача вывести на экран части текста до знака "|" и удалить то что вывелось
Для осуществления решения предполагаемой задачи, заключающейся в проведении вывода заданной части информационного поля из текстовой БД, и обеспечить удаление соответственной части информационного поля из оригинальной области хранения, допустимо применение схемы обработки элементов текстовых БД, основанных на создании копии оригинального хранилища данных, запись элементов в которую осуществляется последовательно обработке оригинального содержимого БД


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB