Задать вопрос

Как удалить строку с повторяющимся значением из CSV (PHP)?

Есть массив в массиве php
$list = array (
              array('', $_POST['subject'], $_POST['time'], $_POST['text'], $_POST['name_html'],''),
          );

И есть CSV-файл.
Сначала я добавляю в конец файла этот array в array'е и получаю одну новую строку с данными полученными из POST-запроса.
$list = array (
              array('', $_POST['subject'], $_POST['time'], $_POST['text'], $_POST['name_html'],''),
          );

          $fp = fopen('db/cards.csv', 'a');

          foreach ($list as $fields) {
              fputcsv($fp, $fields);
          }

          fclose($fp);


После этого мне нужно пройтись по этому же файлу и удалить из него первую (если идти сверху вниз) попавшеюся строку, где будет упомянут тот же $_POST['subject']. Соответственно я просто хочу удалить старое значение $_POST['subject'] из БД. И я не знаю как это сделать.

Весь код
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
я просто хочу удалить старое значение $_POST['subject'] из БД

Уважаемый, Никита из 7"В", не хочу показаться грубым, но для этой задачи оптимальнее использовать настоящую БД (хотя бы PDO + SQLite), а не эмулировать БД на csv-файлах.

А если по существу вопроса, то делается примерно так
<?php
$list = [];
if(($handle = fopen("db/cards.csv", "r")) !== false)
{
    while(($data = fgetcsv($handle, 1000, ",")) !== false)
    {
        $subject = $data[1];
        $list[$subject] = $data; //<--- ключевой момент
    }
    fclose($handle);
}

//теперь в $list только строки с уникальным $subject
print_r($list);

//перезаписываем csv данными из $list
//тут ваш код
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы