[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с текстовым файлом
Димитер
Создаю функцию для удаление определенной строки из файла. Передаю ей три параметра:номер удаляемой строки($id), массив с содержимым строк файла($file), и дескриптор файла($file2). Код:

function clstr($id,$file,$file2){
if ($id != "") {
$id--;
for($i=0;$i<sizeof($file);$i++){
if($i==$id) {
unset($file[$i]);
echo $file[$i];//выводит undefined
}
fwrite($file2,implode("",$file));
}
}
}
;

В файле без изменений. В чем ошибка?



Спустя 28 минут, 1 секунда (16.08.2010 - 19:31) linker написал(а):
unset($file[$i]);
echo $file[$i];//выводит undefined
Правильно выводит, вы э тока что удалили этот элемент массива. Сделайте так
function clstr($id,$file,&$file2){}
, но это не спасет отца русской демократии, нужно еще видимо
ftruncate($file2, 0);
fwrite($file2,implode("",$file));
Да, забыл, цикл тут не нужен
function clstr($id,$file,$file2)
{
if (!isset($file[$id])) return;
unset($file[$id]);
ftruncate($file2, 0);
fwrite($file2,implode("",$file));
}
Плюс, тут еще зависит, в каком режиме открыт файл.

Спустя 6 часов, 11 минут, 18 секунд (17.08.2010 - 01:42) Guest написал(а):
Стало еще интереснее:он удаляет строку, но при этом оставляет перед второй(теперь уже первой) в файле несколько пробелов. Почему это происходит и как это убрать? Пробовал склеивать файл через перенос строки, он его увеличивал пустыми строками.













Спустя 6 часов, 17 минут, 2 секунды (17.08.2010 - 07:59) linker написал(а):
Как файл открывает и читается?

Спустя 2 часа, 39 минут, 17 секунд (17.08.2010 - 10:38) Guest написал(а):
С помощью 'r+'. Но я вообще все по-другому сделал-написал функцию, переписывающую строку файла:

function rewrite($id,$file,$file2,$newwrite)
{
$file[$id]=$newwrite."\r\n";
fwrite($file2,implode("",$file));
}




Спустя 1 час, 10 минут, 50 секунд (17.08.2010 - 11:49) linker написал(а):
Ну а теперь посмотри в конец своего перезаписанного файла и найдешь там кашу. Если там пробелы, значит они там были изначально.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.