2011-09-20 194 views
1

如何修復以下錯誤Message: Invalid argument supplied for foreach() - Line Number: 28foreach爲foreach提供的參數無效()

<?php 
$mileage = array(); 
$mileage_input = $this->input->post('mileage'); 
foreach ($mileage_input as $idx => $name) { //Line 28 
    $mileage[] = array(
     'mileage' => $mileage_input[$idx] 
    ); 
} 
$data = array(
    'mileage' => json_encode($mileage), 
    'customer_number' => $customer_number, 
    'name' => $this->input->post('name') 
); 
$this->db->insert('customer', $data); 
?> 
+0

嘗試'var_dump($ mileage_input)'看看你會得到什麼。如果你沒有得到一個數組,那麼它將無法工作。 –

+3

「里程」字段必須在html表單中命名爲「mileage []」,例如''input type =「text」name =「mileage []」...>',否則PHP將不會自動將其轉換爲_POST/_GET數組中的數組。 –

+1

[爲foreach()提供的無效參數的可能的重複)(http://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach) –

回答

7

$mileage_input可能不是一個數組,這就是爲什麼它不工作。

1

最有可能的$ mileage_input不是數組。 也許你必須錯誤檢查$ this-> input-> post。

如果你不真的關心錯誤,但只是不想得到錯誤,你可以在循環之前將值轉換爲數組。

foreach((array)$mileage_input as $idx => $name { 
+5

把灰塵藏在地毯下不會讓你的房子更清潔。 –

+1

很多時候你可以從例如NULL傳遞給你的函數,在這種情況下,你不想做循環通常做的事情。將NULL轉換爲數組會給出一個空數組,因此foreach中將不會運行循環。我發現它不時很有用。 –

+2

在這種情況下,只需對所定義的變量進行顯式檢查,而不是null。或者,更好的是,如果函數需要一個數組,則向它傳遞一個數組(即使它是空的)。 –

相關問題