2012-03-01 85 views
0

我有下面的代碼,但是,我在我的代碼中出現錯誤。 我找不到問題,但我認爲它來自: UserManagement :: findByUsername($ username);無效的參數foreach()

$a_allSections = UserManagement::findByUsername($username); 
    if($a_allSections) 
    { 
     foreach($a_allSections as $a_section) 
     { 
       echo $a_section['name'];?> 
     } 
    } 
    else 
    { 
     echo 'There's nothing found.' . "\n"; 
    } 
+0

什麼類型是你的'$ a_allSections'這樣的錯誤? – hsz 2012-03-01 10:30:40

+1

更好的檢查可能是'if(is_array($ a_allSections))' – 2012-03-01 10:30:51

+0

@andreas,返回的對象可以是包含迭代器的對象。 – hsz 2012-03-01 10:31:56

回答

1

顯然$a_allSections不是數組,所以foreach抱怨。使用var_dump($a_allSections)找出究竟是什麼,並相應地修復你的代碼。

1

檢查這樣

UserManagement :: findByUsername($用戶名);

1.功能findByUsername($用戶名)應該返回一些值

2.類應包含當前文件內。

3.檢查你的返回結果是否爲數組。如果數組意味着檢查is_array();

4.如果上面3在你的問題確定那麼你不會得到錯誤。

0

$ a_allSections可能是空的

變化條件

if(is_array($a_allSections)){ 
     ... 
    } 

,以防止對空數組

+1

-1:他已經有一個檢查('if($ a_allSections)')that [ensure](http: //php.net/manual/en/language.types.boolean.php)該數組(如果它是一個數組)不會爲空。即使它*是一個空數組,PHP也不會給出警告。 – Jon 2012-03-01 10:46:26

+0

如果返回一個對象或某個字符串或某個整數,該怎麼辦?可能來自findByUsername方法中的一些錯誤。如果($ a_allSections)不檢查它的數組是否只是查看if條件中的變量是否具有某個值。說得通? – Junaid 2012-03-01 11:03:17

+0

顯然這個變量不是一個數組,否則這個問題就不會被問到。但是處理這個問題的正確方法是找出*爲什麼*它不是數組,不會將代碼放在不會執行的'if'內。 – Jon 2012-03-01 11:10:45