Подскажите, правильно ли я сделал или же можно как-то грамотно уменьшить код?

3 задача на этой странице http://code.mu/ru/php/book/prime/database/organization/linking-via-table/

Моя БД на скринах введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

<meta charset="utf-8">
<?php
$host = 'localhost'; // имя хоста
$user = 'root';      // имя пользователя
$pass = '';          // пароль
$name = 'test';      // имя базы данных

$link = mysqli_connect($host, $user, $pass, $name);
mysqli_query($link, "SET NAMES 'utf8'");
$query = "SELECT product.name as product_name, category.name as category_name
FROM
    product
LEFT JOIN product_category ON product_category.product_id=product.id
LEFT JOIN category ON product_category.category_id=category.id";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
for ($data = []; $row = mysqli_fetch_assoc($result); $data[] = $row);
$res = [];
foreach ($data as $elem) {
    $res[$elem['product_name']][] = $elem['category_name'];
}
var_dump($res);
?><ul><?
    foreach ($res as $key =>  $item) { echo '<li>'.$key.':';
        foreach ($item as $slots) {
            echo $slots.' ';
        }

}
?></ul>

Код полностью работает, просто стоило ли два раза вызывать foreach в конце для формирования списка или есть более упрощенная система?


Ответы (0 шт):