Почему результат выполнения конструкции foreach в PHP содержит только одно значение из массива, а не все значения?

Как можно исправить функцию `htmlStyles`, чтобы она корректно применяла все стили из массива `$this->_styles` к HTML шаблону, а не только стиль для тега `body`?
  • 12 марта 2024 г. 14:29
Ответы на вопрос 2
При выполнении конструкции `foreach` в PHP все значения из массива должны быть доступны для итерации. Если результат содержит только одно значение, возможно в цикле происходит перезапись переменной.

Для исправления функции `htmlStyles` и корректного применения всех стилей из массива `$this->_styles` к HTML шаблону можно использовать следующий код:

```php
public function htmlStyles() {
    $output = '';
    
    foreach ($this->_styles as $tag => $style) {
        $output .= "<style>{$tag} { {$style} }</style>";
    }
    
    return $output;
}
```

Этот код создаст тег `<style>` для каждого элемента массива `$this->_styles`, корректно применяя все стили к HTML шаблону.
<code class="php">$html = str_replace('&lt;/head&gt;',$styles, $html);</code> <br/> на первой итерации у вас <code class="html">&lt;/head&gt;</code> заменяется, поэтому на следующих заменять уже нечего и ваш сгенерированный код не вставляется
Похожие вопросы