За последние 24 часа нас посетил 55151 программист и 1777 роботов. Сейчас ищут 928 программистов ...

Как при записи в файл пропускать повторяющее значение?

Тема в разделе "PHP для новичков", создана пользователем Bridun, 25 янв 2019.

Метки:
  1. Bridun

    Bridun Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    71
    Симпатии:
    1
    Подскажите как при записи в файл не допускать дублирующее значение, как это правильно сделать
    есть файл
    1<|>Petro Boiko<|>bridun<|>
    2<|>Petro<|>petro<|>
    3<|>Petro<|>petro<|>

    PHP:
    1. $data = file("file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    2.  
    3. foreach($data as $rows)
    4.   {
    5.   $row = explode("<|>", $rows);  
    6.   if (!strripos($rows, "<|>")) continue;
    7.   }
    8.  
    9. //////////////////////
    10.  
    11. if (is_writeable("file.txt"))
    12.   {
    13.   $f = fopen("file.txt", "a+");
    14.   $write_text = "$max<|>$name<|>$mess<|>\n";  
    15.   }
    16. //////////////////////
    17.  
    18.   if (in_array($row[2], $rows))
    19.     { //Если уже есть в массиве
    20.  
    21.     // удаляем строку
    22.  
    23.     echo ("Запись существует.");
    24.     }
    25.     else
    26.     {
    27.     fputs($f, $write_text);
    28.     fclose($f);
    29.     echo ("Запись добавлена.");
    30.     }
    31.  
    32.       //else echo ("Не удалось записать в файл");
    33.     }
    34.   }
     
  2. username1

    username1 Новичок

    С нами с:
    23 янв 2019
    Сообщения:
    33
    Симпатии:
    2
    а как это сделать неправильно?
     
  3. Bridun

    Bridun Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    71
    Симпатии:
    1
    если ответили то ответьте по делу
     
  4. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Проверять наличие этой записи в файле.
    Можно получить массив файла и пройтись по нему, можно через strpos(), можно циклом проходиться до конца файла feof() и если строки нет, то записывать.
     
    #4 AlexandrS, 25 янв 2019
    Последнее редактирование: 25 янв 2019
  5. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Если смотреть на код выше, то как-то так:
    1. Формируем
    PHP:
    1. $write_text = "<|>$name<|>$mess<|>\n";
    2. Открываем файл для чтения и записи
    3. Запускаем цикл с feof() каждый шаг увеличивая на 1
    4. В цикле проверяем наличие подстроки в строке: можно через strpos() можно через explode()
    5. Если $write_text не найден, то берем количество шагов +1, это будет $max и формируем строку записи
    $write_text="$max.$write_text;
    6.Дописываем в конец файла
    7.fclose()