|
1 / 1 / 0
Регистрация: 06.03.2024
Сообщений: 113
|
||||||
Найти строку в файле, и если нет, то добавить новую13.10.2025, 22:38. Показов 1198. Ответов 10
Метки нет (Все метки)
Здравствуйте уважаемые специалисты.
В файле $file = "db/list"; нужно найти строку $_POST['walletnumber'] = trim($_POST['walletnumber']); и если такая строка не найдена, то добавить новую. Вот код:
- если файл пустой, то совсем ничего не добавляется; - если файл не пустой, то строка добавляется в любом случае, если даже такая строка в файле уже существует; Пожалуйста, поправьте меня, что я делаю не так?
0
|
||||||
| 13.10.2025, 22:38 | |
|
Ответы с готовыми решениями:
10
Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2; если строку нельзя
|
| 13.10.2025, 23:06 | |
|
Так попробуйте прочитать текущий код "по русски"
1. Входим в цикл по строкам 2. Если в текущей строке не содержится значение параметра walletnumber то дописываем строку 3. По выходу из цикла (если количество элементов изменилось) то полностью перезаписываем файл массивом Наводящие вопросы: 1 не замечаете в том алгоритме что я озвучил не состыковок? 2. в какой момент времени может измениться массив в принципе (где вы в него что либо добавляете)? 3. Если в файле нет ни одной записи, какая строка должна записать нужное в файл? 4. Условие проверки (предположим все остальное кроме условия вы исправили): что будет если мы сначала записали Apple а потом app. 5. Зачем вам strstr вам разве нужно знать часть строки начиная с заданной ведь если вам нужно знать входит ли введенная строка в считанную есть более подходящая функция. Не говоря уж, что озвученное над кодом условие вообще другое
2
|
|
|
2590 / 1495 / 688
Регистрация: 23.08.2015
Сообщений: 3,775
|
||||||||||||||
| 14.10.2025, 13:01 | ||||||||||||||
Сообщение было отмечено Kuzma92 как решение
Решение
А вам нужно сначала обойти весь массив целиком, и только потом делать какие-то выводы. Для этого можно добавить отдельную переменную-флаг.
1
|
||||||||||||||
|
1 / 1 / 0
Регистрация: 06.03.2024
Сообщений: 113
|
||||||
| 14.10.2025, 14:41 [ТС] | ||||||
|
sad67man, спасибо вам за развернутый ответ. Увидел свои ошибки, понял как должно быть правильно.
voral, вам спасибо за наводящие вопросы. Постарался во всем разобраться. В силу своих знаний, сделал вот так:
0
|
||||||
|
2590 / 1495 / 688
Регистрация: 23.08.2015
Сообщений: 3,775
|
||||||||
| 14.10.2025, 16:22 | ||||||||
|
2) Если файл огромный, то может не хватить памяти, чтоб его содержимое загнать в переменную. В этом случае построчное чтение выгоднее, но в таком случае и функция file() тоже не подойдет. 3)
1
|
||||||||
|
1 / 1 / 0
Регистрация: 06.03.2024
Сообщений: 113
|
|
| 14.10.2025, 21:20 [ТС] | |
|
sad67man, всё наконец-то, до меня дошло, как до жирафа правда)) Теперь в этом моменте полностью разобрался и буду знать. Спасибо вам огромное за помощь, уделенное время, и главное за полезную для меня информацию.
0
|
|
| 15.10.2025, 07:51 | ||||||||||||||||||||||||||||||||
|
Ну я бы все же проверил условие на соответствие исходной задачи. вы либо условия в начале топика описали не верные либо у вас не верное условие
пользователь введет первый раз c пробелом в конце, а второй раз без пробелом - строки будет две. (а если в другой последовательности - то одна) пользователь введет первый раз строку с переносом строки, а второй раз с без - строки будет три!. (а ввести так может легко. например он значение скопирует через буфер обмена из файлика открытого в текстовом редакторе и захватит переносы) Порядок ломающий логику будет воспроизводиться наоборот если поменять параметры местами в функции strpos - но суть одна Т.е. полагаю стоит "нормализовать" полученное значение. И, кстати, вы поступили правильно что завели до цикла переменную add (только название придумали не логичное. а если не надо добавлять ? ).Кроме того, уже зависит от вашей задачи. Я так понимаю речь идет о номерах кошельков. Если там могут быть буквы, то пользователь может один раз ввести заглавными буквами (или в разнобой) а во второй раз все маленькими... И у вас будут две записи. Если регистр в реальности не имеет значение - необходимо приводить к единому. Далее поговорим об условии. strpos($list, $add) Это поиск строки в подстроке. отсюда: если сначала будет передано app а потом apple - будет только одна строка. Это точно то, что вам нужно? Если да - ок. (кстати в php 8 есть более "правильная" функция str_contains) Если мы тут видим весь код и к скрипту будет обращение пустое - без переданого параметра или с пустым значением - будет добавляться пустая строка - каждый раз. Далее строка
надо либо
На уровне "микрооптимизаций" (или даже нано-) я обычно стараюсь избегать лишних (не нужных по логике) инверсий булевых значений. т.е. !isFind лишнее я бы сделал обратную переменную. но это конечно мелочиТак же я бы разложил на функции. Просто чтобы алгоритм стал более очевидным. в данном случае выделил бы определение надо ли производить запись. Т.е. чтобы был виден отдельно "общий алгоритм" и не мешался при взгляде с алгоритмом принятия решения о записи. Но это уже дело вкуса - можно и вынести из функции Так же хорошо бы добавить проверку наличия файла иначе у вас скрипт упадет с ошибкой Т.е. с учетом вышесказанного (если у вас старая версия PHP без типизации - просто уберите типы из сигнатуры функции)
Добавлено через 10 секунд
Забыл еще один момент. Ведь параметр может быть и не передан. Предусмотрим и это (для php 7.4+) добавим значение по умолчанию(??'')
0
|
||||||||||||||||||||||||||||||||
|
2590 / 1495 / 688
Регистрация: 23.08.2015
Сообщений: 3,775
|
|||||||
| 15.10.2025, 10:45 | |||||||
0
|
|||||||
| 15.10.2025, 11:13 | ||||||||
![]() По большому счету тут правильно и чтение файла убрать в needSave т.к. условие записи "отсутствует запись в файле" ) в общем (оставаясь в фукнционале можно и так)
0
|
||||||||
|
2590 / 1495 / 688
Регистрация: 23.08.2015
Сообщений: 3,775
|
||
| 15.10.2025, 12:35 | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 19.10.2025
Сообщений: 55
|
||
| 20.10.2025, 12:34 | ||
|
0
|
||
| 20.10.2025, 12:34 | |
|
Помогаю со студенческими работами здесь
11
Если $i делится на 2 то выделяем строку цветом aqua, а если на 3 - то курсивом Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с дробной частью), то вывести 2 Добавить в начале каждой новой строки текст Как можно одним запросом редактировать предыдущую строку и добавить новый? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|