2014-11-03 44 views
0

我有一個get函數返回已輸入的項目,這很好。這是Input類:使用foreach()和php表單和自定義函數

public static function get($item){ 
    if(isset($_POST[$item])){ 
     return $_POST[$item]; 
    } else if(isset($_GET[$item])){ 
     return $_GET[$item]; 
    } 
    return ''; 
    } 

我現在想在foreach循環使用它,並遇到了一些麻煩 - 我想這是因爲它沒有返回數組?

這裏是表單代碼:

<tr> 
    <td><input type="text" class="form-control" name="inventory_item_id[]"></td> 
    <td><input type="text" class="form-control" name="inventory_record_amount[]"></td> 
    <td><input type="text" class="form-control" name="inventory_record_orders[]"></td> 
    <td><input type="text" class="form-control" name="inventory_record_sales[]"></td> 
</tr> 

現在,當我做到以下幾點:

$invItems = Input::get('inventory_item_id'); 

foreach($invItems as $a => $b) { 
    //some code here 
} 

PhpStorm罵我說:

提供的foreach無效的參數() 。預期類型:數組或對象,Actual:字符串。

任何想法是什麼錯?

+0

莫非你'的var_dump($ invItems)''後$ invItems =輸入::得到( 'INVENTORY_ITEM_ID');'找一下invItems包含? – 2014-11-04 00:05:30

+0

你的方法在每種情況下都返回一個數組嗎?如果沒有,那麼你會看到那個錯誤仍然存​​在。 – 2014-11-04 00:09:03

+0

可能是空字符串。否則,帖子值確實是一個字符串。沒有其他解釋可能,因爲我看到它。 – Digitalis 2014-11-04 00:13:51

回答

0

可能發生在您首次進入頁面時發生這種情況。這是因爲在第一個請求中沒有任何參數,請使用GET,並且不要使用POST請求加載頁面,因此您還沒有任何數組。

爲了避免這個錯誤,你不能驗證,如果$invItems是一個數組。

$invItems = Input::get('inventory_item_id'); 
if (is_array($invItems)){ 
    foreach($invItems as $a => $b) { 
    //some code here 
    } 
}