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

Статус
В этой теме нельзя размещать новые ответы.

zxxx

Постоялец
Регистрация
9 Окт 2009
Сообщения
148
Реакции
4
PHP:
$arr=file("file.txt"); 
foreach ($arr as $text) 
{ 
echo $text;
}

Как сделать так чтобы в этом цикле, каждый раз удалялась строка $text которая использовалась?
 
PHP:
$arr=file("file.txt"); 
foreach ($arr as $text) 
{ 
echo $text;
}
Как сделать так чтобы в этом цикле, каждый раз удалялась строка $text которая использовалась?
В смысле удалялась из файла? Если да то
PHP:
$arr=file("file.txt"); 
foreach ($arr as $text) 
{ 
echo $text;
unset($arr[$key]);
}
file_put_contents("file.txt", implode('', $arr));
вначале будет удалена строка зи массива, а потом этот массив записан обратно в файл.
 
с таким кодом в файл будет записана пустая строка ( что ясно, т.к. запись только после того как пройдешь по всем элементам )

я бы сделал
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");
}
 
с таким кодом в файл будет записана пустая строка ( что ясно, т.к. запись только после того как пройдешь по всем элементам )
я бы сделал
ну, у тебя тоже будет пустая строка, после прохождения по всем элементам) просто я предполагал, что не все строчки могут быть использованы, (удалялась строка $text которая использовалась?)- т.е пропустить строку, если там есть определённый текст. У тебя он войдёт в бесконечный цикл (хотя его легко избежать, дописав скрипт), если вдруг понадобится это.
Но твоё решение прямо по тз сделано. ^^
 
В смысле удалялась из файла? Если да то
PHP:
$arr=file("file.txt"); 
foreach ($arr as $text) 
{ 
echo $text;
unset($arr[$key]);
}
file_put_contents("file.txt", implode('', $arr));
вначале будет удалена строка зи массива, а потом этот массив записан обратно в файл.

У вас есть ошибка в коде. Переменную $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() не нужен
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху