Ошибка Invalid argument supplied for foreach(), в чем причина
Не понятно, почему выходит такая ошибка.
**Invalid argument supplied for foreach()**
Вот код
foreach($productList as $produсt){
$tovarniy_product = $this->pages_model->get_class($produсt->id);
$arrs_tovarniy_class = array();
foreach ($tovarniy_product as $item){
$tovarniy_class = $this->pages_model->get_tovarniy_class_by_id($item['id_tovarniy_class']);
$arrs_tovarniy_class[] = (int)$tovarniy_class['title'];
}
}
Ругается на вот эту строчку
foreach ($tovarniy_product as $item){
Думал может пустая, Вывовожу переменную через print_r($tovarniy_product)
Результат
Array ( [0] => Array ( [id_tovarniy_class] => 8 ) [1] => Array ( [id_tovarniy_class] => 45 ) [2] => Array ( [id_tovarniy_class] => 51 ) [3] => Array ( [id_tovarniy_class] => 53 ) [4] => Array ( [id_tovarniy_class] => 54 ) )
Что это за ошибка?
Ответы (1 шт):
Автор решения: esergey
→ Ссылка
Ошибка "invalid argument supplied for foreach()" появляется когда php пытается итерироваться по данным, которые не являются массивом или обьектом.
У вас два цикла. Скорее всего часть элементов формируется нормально, и вы привели пример нормального элемента, чем запутали и себя и нас. А часть формируется не нормально - возвращает или boolean или еще что, но точно не обьект или массив.
Добавьте перед вторым циклом:
if(!is_array($tovarniy_product)) echo "Ошибка данных.";