У меня проблема с 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);
}
?>
Это мое предположение:
Ваша проблема связана с тем, что ваш элемент (кроме последнего) заканчивается символом EndOfLine …
Поэтому, когда вы удаляете элемент посередине, нет проблем, но если вы удалите последний, предыдущий имеет символ EndOfLine, и, следовательно, у вас есть пустая строка в вашем файле.
Поэтому в основном вы должны добавить символ EndOfLine при записи в файл, а не хранить их в своих элементах.
Для этого вы должны использовать PHP_EOL
предопределенная константа, которая является символом конца строки для адаптированной к платформе.
И если кому-то интересно посмотреть на этот вопрос, fwrite()
Функция php НЕ добавляет символы EOL.
Других решений пока нет …