Как правильно пройтись по массиву и вывести его элементы?

У меня есть массив, который содержит товары и соответствующие им категории. <br/> <pre><code class="php">$goods = [
    'ASUS TUF' =&gt; ['Игровые ноутбуки', 'Ноутбуки для работы'],
    'ARDOR GAMING NEO' =&gt; ['Игровые ноутбуки', 'Ноутбуки для работы'],
    'MSI Katana' =&gt; ['Игровые ноутбуки', 'Ноутбуки для работы'],
    'HUAWEI MateBook D 16 2024 MCLF-X' =&gt; ['Ноутбуки для работы', 'Ультрабуки'],
    'Samsung Book3 Pro 360 NP960' =&gt; ['Ноутбуки для работы', 'Ультрабуки', 'Ноутбуки-трансформеры']
];</code></pre> <br/> <br/> Мне необходимо вывести данные из этого массива в формате маркированного списка, как показано ниже: <br/> <pre><code class="html">&lt;ul&gt;
	&lt;li&gt;ASUS TUF: Игровые ноутбуки, Ноутбуки для работы&lt;/li&gt;
	&lt;li&gt;ARDOR GAMING NEO: Игровые ноутбуки, Ноутбуки для работы&lt;/li&gt;
&lt;/ul&gt;</code></pre> <br/> <br/> Я попробовал следующий код: <br/> <pre><code class="php">echo '&lt;ul&gt;';

foreach ($goods as $name =&gt; $categories) {

    foreach ($categories as $category) {
        echo "&lt;li&gt;$name: $category&lt;/li&gt;";
    }
}
echo '&lt;/ul&gt;';</code></pre> <br/> <br/> Однако полученный результат отличается от желаемого. <br/> <br/> Как я могу исправить код, чтобы получить нужный формат?
  • 16 ноября 2024 г. 11:03
Ответы на вопрос 2
Ваш код содержит небольшую ошибку, так как он создает новый элемент списка (`<li>`) для каждой категории в массиве, вместо того чтобы выводить все категории в одном элементе списка. Вам нужно объединить категории в строку перед выводом. Вы можете использовать функцию `implode()` для этого. Вот исправленный код:

```php
echo '<ul>';

foreach ($goods as $name => $categories) {
    // Объединяем категории в строку, разделяя их запятыми и пробелами
    $categoriesList = implode(', ', $categories);
    echo "<li>$name: $categoriesList</li>";
}

echo '</ul>';
```

Теперь, когда вы запустите этот код, результат будет в правильном формате и будет выглядеть следующим образом:

```html
<ul>
    <li>ASUS TUF: Игровые ноутбуки, Ноутбуки для работы</li>
    <li>ARDOR GAMING NEO: Игровые ноутбуки, Ноутбуки для работы</li>
    <li>MSI Katana: Игровые ноутбуки, Ноутбуки для работы</li>
    <li>HUAWEI MateBook D 16 2024 MCLF-X: Ноутбуки для работы, Ультрабуки</li>
    <li>Samsung Book3 Pro 360 NP960: Ноутбуки для работы, Ультрабуки, Ноутбуки-трансформеры</li>
</ul>
```

Этот код правильно выводит все категории для каждого товара в одном элементе списка.
<?php
$goods = [
    'ASUS TUF' => ['Игровые ноутбуки', 'Ноутбуки для работы'],
    'ARDOR GAMING NEO' => ['Игровые ноутбуки', 'Ноутбуки для работы'],
    'MSI Katana' => ['Игровые ноутбуки', 'Ноутбуки для работы'],
    'HUAWEI MateBook D 16 2024 MCLF-X' => ['Ноутбуки для работы', 'Ультрабуки'],
    'Samsung Book3 Pro 360 NP960' => ['Ноутбуки для работы', 'Ультрабуки', 'Ноутбуки-трансформеры']
];

echo "<ul>";
foreach ($goods as $name => $categories) {
    echo "<li>$name: " . implode(", ", $categories) . "</li>";
}
echo "</ul>";
?>
Похожие вопросы