foreach()的参数无效

时间:2010-05-15 21:16:38

标签: php 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 ) . "";
            }

2 个答案:

答案 0 :(得分:2)

$subs[$id]可能不是一致的数组。也就是说,$subs[0]可能是一个数组,但$subs[1]是一个标量。

尝试将其转换为数组:

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

如果$subs[1]是标量,则将其转换为一个元素的短暂数组,以便迭代它。

答案 1 :(得分:0)

传递给循环的变量可能不是数组。尝试调试代码,以便在被送入循环之前找出它被赋值的位置。

如果您在某处为该变量分配了一个值,请按以下方式分配:

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

PHP是一种动态类型语言,但知道变量在任何给定时刻的类型仍然非常重要。