2010-05-15 6 views
1

erreur que je reçois Invalid argument supplied for foreach()Invalid argument pour foreach()

Les parties incriminées est la suivante:

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

la cause étrange que je utilise la même construction et ailleurs fonctionne très bien .. Je l'utilise pour générer des sous-catégories et il fonctionne, mais je veux me débarrasser de l'erreur

Ceci est plus contexte

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) . ""; 
      } 
+0

Que contient '$ subs [$ id]'? Est-ce un tableau? –

+0

yup $ subs [$ id] était un tableau de sorte que c'était mon problème .. merci pour ce – user338813

Répondre

2

Il se peut que $subs[$id] ne soit pas systématiquement un tableau. Autrement dit, $subs[0] peut être un tableau, mais $subs[1] est un scalaire.

Essayez coulée à être un tableau:

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

Si $subs[1] est un scalaire, puis coulée il forme un tableau éphémère d'un élément à des fins de itérer dessus.

+0

Hey Bill qui a tué l'erreur merci une tonne .. – user338813

+0

Juste que la coulée au tableau a travaillé autour de votre erreur ne veut pas dire, il est vraiment réparé. Au lieu d'improviser une solution de contournement, vous devriez mieux chercher la cause du problème. Les corrections de ce type conduisent à un code vraiment compliqué qui sera difficile à déboguer et à maintenir. – selfawaresoup

+0

Merci @tech Je l'ai commenté et j'y reviendrai quand le temps le permettra. – user338813

0

La variable que vous transmettez à la boucle n'est probablement pas un tableau. Essayez de déboguer votre code pour savoir où il est assigné une valeur juste avant d'être introduit dans la boucle.

Si vous assinged une seule valeur à cette variable quelque part, lui attribuer comme ceci:

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

PHP est un langage typé dynamiquement, mais sachant ce type d'une variable a à un moment donné est encore très important.

Questions connexes