![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Alek74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 23.3.2006 Репутация: нет Всего: нет |
Есть цикл. Проверка есть ли в массиве такая строка, если нет, то записываем. Но я не могу саму запись этой строки вынести за пределы цикла.
--------------------
---------------------------------- «Филисофия жизни ©» ---------------------------------- |
|||
|
||||
| krulik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 14.1.2006 Где: Украина, Житомир Репутация: 2 Всего: 4 |
а смысл вообще что-то кудато выносить. Если во всем масиве есть только одна такая строка то после того как нашел эту строку и записал в файл обрывай цикл и все. Или я что то не правильно понял.
Ну а если в масиве строк несколько то без цикла помоему не обойтись. Это сообщение отредактировал(а) krulik - 12.4.2006, 12:21 --------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками) |
|||
|
||||
| Alek74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 23.3.2006 Репутация: нет Всего: нет |
Тут дело не в том сколько строк совпадет, а в том, что просто надо вынести за пределы цикла. В одном случае это может и не играет роли, а в другом может понадобиться.
Меня интересует сам алгоритм такого действия. --------------------
---------------------------------- «Филисофия жизни ©» ---------------------------------- |
|||
|
||||
| krulik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 14.1.2006 Где: Украина, Житомир Репутация: 2 Всего: 4 |
в рнр не спец.
не особо понимаю о каких алгоритмах идет речь. Ну да не важно. Хорошо а что тогда мешает создать еще один масив в который записывать позиции в которых была найдена твоя строка. Ну а потом опять выполнить запись. Вариант немного туповат но тож вариант. Вариант второй вынеси блок работы с файлом в отдельную функцию и вызывай ее из цикла. Второй вариант конечно поэкономнее в плане количества кода. Но по сути почти такой же как и код приведенный выше. --------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками) |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
|
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
Ты выкусил кусок кода и что-то пытаешься спросить
Еще и namespac-ы пересекаешь (forech ($file.... а дальше в самом же цикле $file = .....) Покажи откуда берется $file откуда берется $dt И последнее. Какую строчку ты хочешь выносить из цикла хочубей не пойму. Какая переменка ее представляет. P.S. Идентация кода - правило хороших программистов Это сообщение отредактировал(а) smartov - 12.4.2006, 14:37 |
|||
|
||||
| Alek74 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 23.3.2006 Репутация: нет Всего: нет |
$file = file(data.dat);
Содержимое файла в виде массива. $dt = произвольное число. Проверяем
Есть ли такая строка в файле. Если нет, то:
Если я делаю
то у меня сответственно запись в файл попадает в цикл. От сюда вопрос - Как вынести запись за пределы цикла? --------------------
---------------------------------- «Филисофия жизни ©» ---------------------------------- |
||||||
|
|||||||
| smartov |
|
||||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
И неужели у тебя этот код еще и работает? :\
Смотрим алгоритм 1) Ты прочитал файл в переменку $file. 2) Потом в цикле, если в нем нету нужной строчки то ты переменку $file (по которой уже бежит foreach) перезаписываешь поверх дескриптором файла
После чего пишешь в файл и закрываешь. 3) Происходит следующая итерация цикла, но в $file уже не будут строки файла data.dat там будет null. И ты получишь warning сразу же. Короче тебе надо поискать строку в файле и если ее нет, то добавить? Проще написать это заново.
|
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |