Получил по запросу от одной компании тестовую задачу, чтобы прокачать свои текущие навыки, и понять уровень требований на рынке по моей специализации.
Описание задачи:
Последовательность реализации:
- Необходимо создать в БД PostgreSQL три таблицы заданной в ТЗ структуры, расширив количество ввведенных данных для более удобного тестирования.
 - Формат вывода итоговых данных не сильно беспокоит заказчика, поэтому вывод будет осуществлен тривиально, используя самые простые операторы PHP: var_dump() и print_r().
 - Обработка запросов к БД будет осуществляться через класс, который находится в файле DbClass.php и подключается к скрипту (см. строка 2 скрипт PHP). Код класса не приводится здесь целиком, показаны только два метода с запросами к БД (см. Код запросов к базе данных - PDO).
 - Первый запрос, вызывается из скрипта РНР (см. строка 5 скрипт PHP) и позволяет получить ассоциативный массив данных, в котором каждому ключу - номеру телефону, будет поставлено в соответствие значение - строка со списком ID всех зданий, где имеется номер такого телефона.
 - В скрипте РНР обрабатываем полученный массив и убираем те позиции, в значениях которых присутствует только BuildID одного здания (см. строка 9 скрипт PHP). Остальные данные записываем в новый массив со следующей трансформацией (см. строка 11 скрипт PHP): каждому ключу - набору BuildID (строка с перечислением через запятую), добавляем в массив значений номер телефона.
 - Выводим общий полученный сгруппированный массив на страницу браузера (см. строка 15 скрипт PHP).
 - В следующем цикле скрипта РНР проходимся по всем элементам полученного массива с целью отправки запросов к базе данных и получения названий адресов зданий по их BuildID (см. строка 22 скрипт PHP).
 - Второй метод класса, находящегося в файле DbClass.php (см. функцию getBuildName Код запросов к базе данных - PDO), позволяет нам получить все адреса по ID из строки с перечнем BuildID.
 - Выводим на странице все адреса группы (см. строка 25 скрипт PHP) и номера телефонов (см. строка 27 скрипт PHP), общие для каждого адреса в группе. Номер группы устанавливаем последовательно (см. строка 30 скрипт PHP).
 
Таблицы базы данных:
	Файл скрипта PHP:
Код запросов к базе данных - PDO:
Итоговая реализация - вывод на страницу браузера после запуска скрипта:
Удачи в разработке!
другие материалы:
- Практический пример скрипта SOAP клиента на PHP для запросов к серверу ASP.NET
 - решение тестовой задачи MySQL - количество дней в месяцах
 - решение тестовой задачи MySQL - разность дат в соседних строках
 - решение тестовой задачи PostgreSQL - создание выборок из базы данных
 - решение тестовой задачи PHP, JS, MySQL - добавление комментариев к темам
 - решение тестовой задачи PHP, JS, SQLite - каталог товаров с подгрузкой данных
 - решение тестовой задачи PHP, PostgreSQL - группировка по пересечению
 - решение тестовой задачи PHP - классы для обработки разных файлов
 - решение тестовой задачи PHP - класс для очистки НДС в сумме счета
 - решение тестовой задачи PHP - определить является ли число простым
 - решение тестовой задачи PHP - вычисление суммы всех соседей элемента массива
 - решение тестовой задачи PHP - подсчет количества вторников в интервале
 - решение тестовой задачи PHP - формирование XML на основе данных из MySQL
 - решение тестовой задачи PHP - класс реализации структуры Deque с кольцевым буфером
 - решение тестовой задачи ORM RedBeanPHP - загрузка и вывод связанных данных
 - решение тестовой задачи JavaScript - фильтрация списка на странице
 - решение тестовой задачи Jquery - убегание блока от курсора
 - Flutter Создание мобильной версии страницы сайта
 - Flutter Отправка POST запроса со страницы сайта на сервер
 - Flutter Создание диалогового окна с гиперссылкой в мобильной версии сайта
 - Flutter Локальное сохранение данных в формате "ключ"-"значение"
 - VS Code подключение удаленного доступа FTP(SFTP) с помощью "Remote FS"
 - Flutter Использование Timer для периодического изменения текста на странице
 - Flutter Форма авторизации с валидацией вводимых данных
 - Flutter Авторизация с валидацией и отправкой данных на сервер
 - Flutter WEB загрузка файла на сервер
 - Flutter Widgets - интересные виджеты Flutter
 - Telegram - работа с кнопками меню команд и web_app
 - Pet-project memoLink с использованием HTMX - памятка с QR кодом
 - Блок рабочего проекта WEBsmeta (описание) - расчет по стройматериалам для ремонта.
 - Pet-project получение данных по акциям с Мосбиржи через API MOEX ISS.