Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 25

Как избавиться от кучи if?

17.01.2019, 16:56. Показов 3408. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Делаю парсинг однотипных сайтов. Есть длинный список тегов, которые надо получить. Если тега не нашлось, надо записать в лог соотв. сообщение и иногда сделать continue для цикла (если тег важен). Код получается вроде и простым, но вроде и индусским:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        foreach ($items as $item) {
            $rating = $contentPage->find('span#rating', 0);
 
            if (is_null($rating)) {
                Log::msgWarning('Rating not found');
                continue;
            }
 
            $name = $contentPage->find('div.name', 0);
 
            if (is_null($name )) {
                Log::msgWarning('Name not found');
            }
 
            // ещё десяток таких же проверок, и если дошли до конца, сохранить всё базу
 
            $db->save(); // (условно)
        }
можно ли как-то это улучшить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.01.2019, 16:56
Ответы с готовыми решениями:

Получать различные начала кучи при создании кучи внутри цикла
Можно ли как-то такое провернуть, чтобы на каждой итерации цикла получались различные адреса (выбираются ОС) на начало кучи (периодические...

Разбить камни на две кучи так, чтобы вес одной кучи не превышал веса другой более критической массы
Здраствуйте,уважаемые програмисты!Проблемы с задачкой Условие:Есть куча камней,каждый камень имеет вес,есть критическая масса.Нужно...

Нахождение максимального элемента кучи, добавление элемента, удаление элемента из кучи
Дано бинарное дерево-куча. Нужно найти максимальный элемент (корень дерева), добавить новый элемент, удалить максимальный элемент. ...

3
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
17.01.2019, 17:08
Лучший ответ Сообщение было отмечено azzzz как решение

Решение

azzzz, ссделайте массив тегов и вложенным циклом его точно так же перебирайте.
т.е. что то в духе
PHP
1
2
3
4
5
6
7
8
9
10
Tags=array ("Rating"=>'span#rating','Name'=>'div.name');
foreach ($items as $item){
      $Out = array();
      foreach (Tags as $Id=>$Tag) {
                     $Out[$Id] = $contentPage->find($Tag, 0);
                     if (is_null($Out[$Id]))  Log::msgWarning($Id.' not found');
            
      }
      $db->save($Out); //а вот этот хлопец ассоциативному массиву на входе вооще будет рад так что ни в сказке сказать ни пером описать
}
1
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 25
17.01.2019, 17:38  [ТС]
Fulcrum_013, отличное решение, спасибо! Свежий взгляд всегда помогает
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
17.01.2019, 17:51
Цитата Сообщение от azzzz Посмотреть сообщение
Свежий взгляд всегда помогает
Стандартный поход которому учат с самого начала первого курса а то и гораздо ранее на уроках информатики - а именно алгоритм штука универсальная. А соответсвенно все что можно сделать задаваемым переменными нужно делать переменными. В том числе списки нужных переменных. Мораль сей басни такова - программист должен быть ленивым, тогда он чтобы не писать, а потом не переделывать кучу кода выносит все в настройки которые редактируемыми юзверем, что в принципе тут и сделано .
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2019, 17:51
Помогаю со студенческими работами здесь

Как оценить объём кучи
Как оценить объём кучи при динамическом выделении памяти? Чтобы проверить можно ли добавлять в память ещё что-то

Как избежать использования кучи проверок?
В общем есть файл конфига, в котором хранятся переменные, так вот, я хотел бы узнать, можно ли избежать кучи проверок, ведь при загрузке...

Как удалить объект класс из кучи по указателю?
Как удалить экземпляр класса из кучи по указателю? Есть простенький код: запускает два потока, один выделяет место для объектов и...

Как организовать запись кучи значений из грида?
Сообщения перенесены из темы https://www.cyberforum.ru/ado-net/thread362189.html Здравствуйте ! Уважаемые друзья ! Если я...

как слепить из кучи .resx один .dll ?
Пролог Ребят, я прекрасно понимаю, что своим вопросом насмешу вас...но я в этом полный ноль...заранее прошу прощения за неправильные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru