Ошибка я получаю Недействительный аргумент, предоставленный для foreach ()
Незаконные части - это:
foreach($subs[$id] as $id2 => $data2)
Странная причина я использую ту же конструкцию в другом месте и она хорошо работает.. Я использую его для генерации подкатегорий, и это работает, но я хочу избавиться от ошибки
Это - больше контекста
foreach($parents as $id => $data)
{
if($x == 0)
{
$html .= "<tr width='25%' class='row2'>";
}
$shtml = "";
$i = 0;
***foreach($subs[$id] as $id2 => $data2)***
{
$i++;
if($i == 15)
{
$shtml .= $this->ipsclass->compiled_templates[ 'skin_businesses' ]->portal_categories_sub_row( $id2, $data2['cat_name'], 1 ) . "";
break;
}
else
$shtml .= $this->ipsclass->compiled_templates[ 'skin_businesses' ]->portal_categories_sub_row( $id2, $data2['cat_name'], 0 ) . "";
}
Возможно, $ subs [$ id]
не всегда является массивом. То есть $ subs [0]
может быть массивом, а $ subs [1]
- скаляром.
Попробуйте преобразовать его в массив:
foreach((array)$subs[$id] as $id2 => $data2)
Если $ subs [1]
является скаляром, то преобразование его образует эфемерный массив из одного элемента для целей итерации по нему.
Переменная, которую вы передаете в цикл, вероятно, не является массивом. Попробуйте отладить свой код, чтобы узнать, где ему присваивается значение непосредственно перед подачей в цикл.
Если вы где-то присвоили этой переменной одно значение, присвойте его так:
$subs[1] = array('somevalue');
PHP - это язык с динамической типизацией, но знание того, какой тип переменной имеет в любой данный момент, по-прежнему очень важно.