удаление строки

Тема в разделе "PHP", создана пользователем zxxx, 28 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. zxxx

    zxxx Постоялец

    Регистр.:
    9 окт 2009
    Сообщения:
    148
    Симпатии:
    4
    PHP:
    $arr=file("file.txt"); 
    foreach (
    $arr as $text

    echo 
    $text;
    }
    Как сделать так чтобы в этом цикле, каждый раз удалялась строка $text которая использовалась?
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    В смысле удалялась из файла? Если да то
    PHP:
    $arr=file("file.txt"); 
    foreach (
    $arr as $text

    echo 
    $text;
    unset(
    $arr[$key]);
    }
    file_put_contents("file.txt"implode(''$arr));
    вначале будет удалена строка зи массива, а потом этот массив записан обратно в файл.
     
  3. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    с таким кодом в файл будет записана пустая строка ( что ясно, т.к. запись только после того как пройдешь по всем элементам )

    я бы сделал
    PHP:
    // считываем файл
    $arr=file("file.txt");
    // пока файл не пустой
    while(count($arr)>0)
    {
     
    // выводим строку
     
    echo $arr[0];
     
    // записываем файл без первой строки
     
    file_put_contents("file.txt",trim(implode("",array_shift($arr))));
     
    // сновасчитываем файл
     
    $arr=file("file.txt");
    }
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    ну, у тебя тоже будет пустая строка, после прохождения по всем элементам) просто я предполагал, что не все строчки могут быть использованы, (удалялась строка $text которая использовалась?)- т.е пропустить строку, если там есть определённый текст. У тебя он войдёт в бесконечный цикл (хотя его легко избежать, дописав скрипт), если вдруг понадобится это.
    Но твоё решение прямо по тз сделано. ^^
     
  5. Farid515

    Farid515 Писатель

    Регистр.:
    22 окт 2010
    Сообщения:
    6
    Симпатии:
    1
    У вас есть ошибка в коде. Переменную $key нужно определить из массива методом $key => $val прежде чем делать unset.
    Скрипт можно переписать в следующий вид.

    PHP:
    $arr=file("file.txt");

    foreach (
    $arr as $key => $text)
    {
    echo 
    $text;
    ...............
    какие то операции над $text-ом
    ...............

    if (
    $used) unset($arr[$key]);
    }

    file_put_contents("file.txt"$arr); // обратите внимание что implode() не нужен
     
Статус темы:
Закрыта.