2010-05-15 5 views
1

Ошибки Я получаю Недействительный аргумент для Еогеаспа()Недопустимый аргумент Еогеаспа()

Части нарушители заключается в следующем:

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

Что находится в '$ subs [$ id]'? Это массив? –

+0

yup $ subs [$ id] был массивом, так что это была моя проблема ..thanks для этого – user338813

ответ

2

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

Попробуйте литье, чтобы быть массивом:

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

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

+0

Эй, Билл, который убил ту ошибку, благодаря тонне. – user338813

+0

Просто, что отбрасывание массива вокруг вашей ошибки не означает, это действительно исправлено. Вместо того, чтобы импровизировать обходной путь, вам лучше искать причину проблемы. Исправления, подобные этому, приводят к действительно запутанному коду, который будет трудно отлаживать и поддерживать. – selfawaresoup

+0

Спасибо @tech Я прокомментировал это и вернусь к нему, когда позволит время. – user338813

0

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

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

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

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

Смежные вопросы