Тема: Розділи та підрозділи (БД/Масиви)
ТЗ: Вивести список розділів форуму, під кожним розділом повинні виводитися його підрозділи.
Наприклад:
Розділ: Програмування
Підрозділи:
PHP
C++
Java
Python
Розділ: Верстка
Підрозділи:
HTML
CSS
Design
Використовується паттерн MVC, тому в View шаблон повинні передатися тільки змінні (масиви) для перебору.
В моделі написав такий метод.
    public function readForumsParts(){
        
    $resultForum = []; //масив для даних розділу
    $resultPart = []; //масив для даних підрозділу
    
        //робимо вибірку розділів форуму    
    $forums = $this->db->query("SELECT * FROM forums");
        $forums->setFetchMode(PDO::FETCH_OBJ);
        
         while($forum = $forums->fetch()) //збираємо результати вибірки розділів
         {
            $forum->name = htmlspecialchars($forum->name);
            $resultForum[] = $forum; //записуємо обєкт даних поточного розділу в масив
            
                        //робимо вибірку підрозділів по поточному forum->id розділа
            $parts = $this->db->prepare("SELECT * FROM forum_part WHERE id_forum = ?");
            $parts->execute([$forum->id]);
            
            $parts->setFetchMode(PDO::FETCH_OBJ);
                    
            while($part = $parts->fetch()){ //збираємо результати вибірки підрозділів
                
                $resultPart[] = $part; //записуємо обєкт даних поточного підрозділу в масив
            
            }
            
         }
        //повертаємо масив з двома масивами всередині
        return [$resultForum, $resultPart];
        
    }
В результаті роботи методу маємо наступний масив.
Array
(
    [0] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1
                    [name] => dfshsdfhdfh
                )
            [1] => stdClass Object
                (
                    [id] => 2
                    [name] => тест =)
                )
            [2] => stdClass Object
                (
                    [id] => 3
                    [name] => тестовий розділ :)
                )
            [3] => stdClass Object
                (
                    [id] => 4
                    [name] => тееееест :)
                )
        )
    [1] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1
                    [id_forum] => 2
                    [name] => ок)))))))
                )
            [1] => stdClass Object
                (
                    [id] => 2
                    [id_forum] => 2
                    [name] => паоваовпо
                )
        )
)І приклад того, як я це все вививоджу.. 
        $array = $model->readForumsParts(); //отримуємо вище вказаний масив
        
        foreach($array[0] as $forum){ //перебираємо масив розділів форуму
            
            echo '<b>'.$forum->name.'</b></br>'; //виводимо розділ
            
            foreach($array[1] as $part){ //перебираємо підрозділи поточного розділу
                
                if($forum->id == $part->id_forum) //якщо поточний id розділу = id поточного підрозділу
                    echo $part->name.'</br>'; //то виводимо підрозділ
                
            }
            
            
        }Ок, все працює.
Але як можна вирішити оптимальніше?
Можливо є ще якесь рішення з самим SQL запитом (зробити якось один запит для вибірки) у звязці з PHP, або ж оптимальніше з'єднати масиви? (не просто злити в один). . . .
