![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Дана строка: 5,6,7-20,35,100-400,550,549,548
Нужно обработать все элементы с заданными ИД в этом списке и интревалах. По идее, нужно бы это все обработать и закинуть все номера в массив. Но если будет указана строка, типа: 3,4,5,7,100-10000, то получиться, что нужно будет 9004 элемента записывать в массив, что имхо довольно много. А ведь можешь быть еще больше. Как поступить в этом случае, чтобы не заносить все поэлементно в массив, а затем через foreach обрабатывать. Есть какие-нибудь мысли? |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 22 Всего: 53 |
я бы сделал так:
1) разбить строку по запятым, получил бы массив: (3 4 5 6 100-10000) 2) циклом foreach пройтись по полученному массиву, определяя является ли элемент числом или же интервалом, если числом, то получить элемент с ID равному заданному числу, если интервалом, то определить границы интервала (регекспом или др строковыми ф-циями) и через цикл while или do .. while совершать операции над элементами с ID, находящимися в полученном интервале |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Wowa, а зачем тебе это нужно? Может быть есть более простое решение?
Варианты Ирокеза поддерживаю. Кроме того что цикл foreach нужен -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Есть база с записями. У каждой записи есть ИД. Мне нужно удалить в ней определенные записи. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 5 Всего: 454 |
По методу Irokez-а я бы:
1) без изменений 2) Преобразовать массив из полученного вида в массив типа Start-End, т.е. для указанного случая 3 3 4 4 5 5 6 6 100 10000 Дальше уже работать много проще...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
А что сделать быстрее
выполнить N раз это:
или один раз это:
? |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Конечно вторым способом. По вопросу: бьём список на числа и интервалы. Все числа сгруппировать в один IN, а интервалы в несколько OR BETWEEN. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Вот простенький пример за 5 минут, не проверяющий верность интервала(100-5), и не имееющий отрицания(NOT IN, NOT BETWEEN):
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]()
|
| Правила форума "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. |