Неверный аргумент для foreach () - PullRequest
1 голос
/ 16 мая 2010

Ошибка. Я получаю неверный аргумент для 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 ) . "";
            }

Ответы [ 2 ]

2 голосов
/ 16 мая 2010

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

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

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

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

0 голосов
/ 16 мая 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...