За последние 24 часа нас посетил 59251 программист и 1852 робота. Сейчас ищут 1212 программистов ...

Прерывание, продолжение цикла по клику

Тема в разделе "PHP для новичков", создана пользователем espltd, 24 янв 2017.

  1. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    А вот тут мы с тобой что делали?
    Убираешь foreach и получаешь свой arr3. С памятью совсем плохо...
     
  2. espltd

    espltd Новичок

    С нами с:
    11 авг 2015
    Сообщения:
    47
    Симпатии:
    2
    Я не понимаю как с файлами грамотно поработать, чтобы результат получить. Про твой пример я помню - не забыл))
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    тебе результат в файл нужно записать?
     
  4. espltd

    espltd Новичок

    С нами с:
    11 авг 2015
    Сообщения:
    47
    Симпатии:
    2
    Да, именно удалив эти значения из того файла, а остальные чтобы остались. Я вроде подробно написал:D
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Этот код очистит содержимое файла.
    PHP:
    1. $f= fopen("file.log",'w');//открываем/создаём нужный файл (вместо "file.log" впишите ваш файл) 'w' - означает //создание либо замену всего имеющегося на своё
    2. flock($f,2); //запрещаем доступ к файлу, пока он не будет закрыт
    3. fwrite($f,""); // заменяем в файле текст на тот кто приведён после $f, в нашем случае ничего
    4. fclose($f);//закрываем наш файл
    Как ты думаешь, где я его взял?
    --- Добавлено ---
    После этого записываешь в файл как обычно...
     
  6. espltd

    espltd Новичок

    С нами с:
    11 авг 2015
    Сообщения:
    47
    Симпатии:
    2
    Я пытаюсь понять, понял ли ты правильно поставленную задачу. Эти конструкции я и так в гугле находил для работы с файлами. Но речь то не о том, как очистить файл и заменить содержимое вовсе, а как заменить конкретное содержимое, например то, что я описал выше...
    --- Добавлено ---
    Я пытался цикл применить, но он мне почти все элементы в файле удаляет... Пытался сделать уникальный массив с помощью array_diff. Массив получаю, но в файл он не записывается. Вернее записывается, но удаляет не то, что должен! Жесть(((





    PHP:
    1. $massInput = file('one.txt', FILE_IGNORE_NEW_LINES);
    2.     $massUsed = @file('two.txt', FILE_IGNORE_NEW_LINES);
    3.            
    4.     print 'Исходный массив<pre>';
    5.     print_r($massInput);
    6.     print '</pre>';
    7.    
    8.     // схождение проверяем
    9.     $result = array_intersect($massInput, $massUsed);
    10.    
    11.  
    12.    
    13.    
    14.     print 'Найденные элементы в файле<pre>';
    15.     print_r($result);
    16.     print '</pre>';
    17.    
    18.     if(!empty($result)){
    19.        
    20. //расхождение
    21.         $rashod = array_diff($massInput, $massUsed);
    22.        
    23.         for($i=0; $i<sizeof($massInput); $i++){
    24.             $f= fopen("users.txt",'w');
    25.             flock($f,2);
    26.             fwrite($f, $rashod[$i]);
    27.             fclose($f);
    28.         }
    29.  
    30.     }else{}
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @espltd, удаляешь всё и записываешь только то что там должно быть.
    PHP:
    1. $f= fopen("users.txt",'w'); // открываешь
    2.  
    3. flock($f,2);
    4.  
    5. foreach( $rashod as $value ){
    6.          
    7.           fwrite($f, $value); // пишешь
    8.          
    9.        }
    10.  
    11. fclose($f); //закрываешь
    --- Добавлено ---
    Это вместо for
     
  8. espltd

    espltd Новичок

    С нами с:
    11 авг 2015
    Сообщения:
    47
    Симпатии:
    2
    помучавшись уже сам сделал. Спасибо огромное.)
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    покажи как сделал.
     
  10. espltd

    espltd Новичок

    С нами с:
    11 авг 2015
    Сообщения:
    47
    Симпатии:
    2
    PHP:
    1.     if(!empty($result)){
    2.        
    3.         $rashod = array_diff($massInput, $massUsed);
    4.            
    5.         $f= fopen("users.txt",'w');
    6.        
    7.         foreach( $rashod as $item ){      
    8.                
    9.             fwrite($f, $item."\r\n");              
    10.         }
    11.        
    12.         fclose($f);
    13.  
    14.     }else{}
    --- Добавлено ---
    я сперва сделал не правильно, так как во внутрь цикла поместил flock($f,2); Он постоянно блокирован был, потому как я fclose($f) тоже запихал во внутрь цикла. Вот скрипт и заблудился)