Почему результат выполнения конструкции 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 шаблону.
$html = str_replace('</head>',$styles, $html); 
на первой итерации у вас </head> заменяется, поэтому на следующих заменять уже нечего и ваш сгенерированный код не вставляется
Похожие вопросы