Недействительный аргумент для foreach ()

Ошибка я получаю Недействительный аргумент, предоставленный для 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 ) . "";
            }
1
задан user338813 15 May 2010 в 21:16
поделиться

2 ответа

Возможно, $ subs [$ id] не всегда является массивом. То есть $ subs [0] может быть массивом, а $ subs [1] - скаляром.

Попробуйте преобразовать его в массив:

foreach((array)$subs[$id] as $id2 => $data2)

Если $ subs [1] является скаляром, то преобразование его образует эфемерный массив из одного элемента для целей итерации по нему.

2
ответ дан 3 September 2019 в 00:31
поделиться

Переменная, которую вы передаете в цикл, вероятно, не является массивом. Попробуйте отладить свой код, чтобы узнать, где ему присваивается значение непосредственно перед подачей в цикл.

Если вы где-то присвоили этой переменной одно значение, присвойте его так:

$subs[1] = array('somevalue');

PHP - это язык с динамической типизацией, но знание того, какой тип переменной имеет в любой данный момент, по-прежнему очень важно.

0
ответ дан 3 September 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: