2014-09-23 5 views
1

У меня проблема с fwrite. Вот что я делаю. Я получаю данные из текстового файла, который я печатаю в таблицу. После того, как я напечатаю эти значения, пользователь должен будет выбрать данные, которые следует удалить (я делаю это с помощью ключа). Поэтому, когда он нажимает на удаление, файл будет публиковать, какой ключ нужно удалить. Все это работает. Я обновляю массив, удаляя ключ, и это также работает. Но как только данные должны быть переписаны в текстовый файл, файл добавляет другое пространство, из-за чего массив будет иметь ошибку «неопределенного смещения». Поэтому я должен избавиться от этой пустой строки. Это мой код :fwrite добавляет пустую строку в текстовый файл

<?php 

// Opening the required file 
include("deletefunc.php"); 

$obj = new deletefunc(); 
$result = $obj->getMeData(); 
// Get posted value (The key that has to be deleted from the array) 
$deleteKey = $_POST['rowNumber']; 

$updateArray = array(); 

for($i=0; $i<count($result); $i++){ 
    if($i==$deleteKey){ 

    } 
    else{ 
     $updateArray[$i] = $result[$i]; 
    } 
} 
var_dump($updateArray); 

// Deleting data form textfile (Replacing) 
$filename="phones.txt"; 
$file = fopen($filename,"w"); 
foreach($updateArray as $row){ 
    fwrite($file, $row); 
} 

?> 
+0

Добавлена ​​ли пустая строка, где была удалена строка? Думаю, я знаю, в чем проблема, если это так. – MisterJ

+0

Да, он добавляет строку, в которой он был удален. Но странная часть - это только если я удалю последний. – Daniel

+0

Значит, он отлично работает, удаляя любую строку, кроме последней? – MisterJ

ответ

0

Это мое предположение:

Ваша проблема связана с тем, что ваш элемент (за исключением последнего) заканчивается с EndOfLine характером ... Так что, когда вы удалите элемент в середине, без проблем, но если вы удалите последний, тот должен иметь символ EndOfLine, и поэтому у вас есть пустая строка в вашем файле.

В основном вы должны добавить символ EndOfLine при записи в файл и не сохранять их в своих элементах.

Для этого вы должны использовать предопределенную константу PHP_EOL, которая является символом конца строки для адаптированных к платформе.

И если кому-то интересно, глядя на этот вопрос, функция php fwrite() НЕ добавляет символы EOL.

+0

Спасибо большое, я собираюсь понять это с помощью этой информации! :) – Daniel

Смежные вопросы