2012-04-16 89 views
-4

我無法弄清楚什麼是錯用這部分的代碼:的foreach代碼不工作

}else{ 
$error_message = '<span class="error">'; 
foreach($error as $key => $values){ 
    $error_message.= "$values<br />"; 
} 
$error_message.="</span><br /><br />"; 
} 

我得到的錯誤:

Warning: Invalid argument supplied for foreach() in FILE DIRECTORY on line 45

45號線是foreach($error...

解決:我的問題是我弄亂了大括號的位置,這反過來搞砸了陣列

+2

顯示其中'產生$ error'請代碼。 – Sirko 2012-04-16 15:55:37

+1

'$ error'不能是數組(或其他可迭代類型) – Matthew 2012-04-16 15:56:07

+1

您的'$ error'變量顯然不是數組,因爲它應該是。把'var_dump($ error);'放在那個foreach前面並查找結果。 – brezanac 2012-04-16 15:57:17

回答

5

錯誤消息說$error不是數組。你可以在循環之前檢查它var_dump($error);以檢查它是什麼。

+0

我的代碼中早些時候設置了$ error。但它迴應爲空,對此有何建議? – Matt 2012-04-16 15:58:06

+1

@Matt錯誤消息不會說謊。你有什麼'var_dump'呢? – xdazz 2012-04-16 15:59:32

+0

難道是你顯示的代碼是在一個函數內部,而'$ error'是在它之外定義的嗎? – brezanac 2012-04-16 15:59:58

0

如果$error有時null,則以下就足夠了:

}else{ 
    if(!empty($error)){ // only attempt to build error messages if there are errors 
     $error_message = '<span class="error">'; 
     foreach($error as $key => $values){ 
      $error_message.= "$values<br />"; 
     } 
     $error_message.="</span><br /><br />"; 
    } 
}