Reputation: 39
Error I'm receiving Invalid argument supplied for foreach()
The offending portions is this:
foreach($subs[$id] as $id2 => $data2)
Strange cause I'm using the same construct elsewhere and it works fine.. I'm using it to generate sub-categories and it works but I want to get rid of the error
This is more context
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 ) . "";
}
Upvotes: 1
Views: 143
Reputation: 15832
The variable that you pass to the loop is probably not an array. Try to debug your code to find out where it being assigned an value just before being fed into the loop.
If you assinged a single value to that variable somewhere, assign it like this:
$subs[1] = array('somevalue');
PHP is a dynamically typed language but knowing what type a variable has at any given moment is still very important.
Upvotes: 0
Reputation: 562260
It may be that $subs[$id]
is not consistently an array. That is, $subs[0]
may be an array, but $subs[1]
is a scalar.
Try casting it to be an array:
foreach((array)$subs[$id] as $id2 => $data2)
If $subs[1]
is a scalar, then casting it forms an ephemeral array of one element for purposes of iterating over it.
Upvotes: 2