Вы не используете цикл foreach.Сделайте это:
foreach($model->getAllThemes() as $theme) {
echo '<li>' . $theme->id . ' ' . $theme->title . '</li>';
}
Обратите внимание, что внутри цикла я использую $theme
вместо $themes
.Это связано с тем, что цикл foreach берет верхний элемент из массива и присваивает его переменной, которая идет после этого as
.В этом случае as $theme
.
То, что вы сейчас делаете, - это использование цикла while с присваиванием внутри.
while ($themes = $model->getAllThemes())
Другой способ написать это, который может сделать вашу проблему более очевидной, заключается в следующем:
while (($themes = $model->getAllThemes()) != false)
Или, если быть более точным, это:
$themes = $model->getAllThemes();
while($themes != false)
Поскольку $themes
заполнен допустимым массивом, он не регистрируется в цикле как пустой или ложный.Это всегда правда.Вы на самом деле не ездите на велосипеде ни по одной из тем.Вы просто проверяете, существует ли массив тем и продолжает ли он работать.Он всегда существует, следовательно, бесконечный цикл.
Фактический цикл foreach будет проходить через каждую тему в вашем массиве и позволит вам что-то с ней сделать.Он будет работать так же, как вы ожидаете в коде цикла while.