2015-11-05 37 views
-3

這使我感到困惑,我很厭倦將變量存入數據庫之前將變量存儲爲變量。在foreach語句中未定義的變量PHP

這裏是我的代碼

foreach($_POST['parts'] as $key => $value){ 
     $aparts .= $value.','; 

    } 

它存儲$aparts罰款,但我得到了下面的行未定義變量錯誤。

$aparts .= $value.','; 

我很新和學習,我去,我想知道爲什麼發生這種情況:)

+5

定義之前:'$ aparts ='';'。 – Blackhole

+2

「*我知道的最簡單的方法將關閉錯誤報告*」,不 - 最簡單的方法是解決它,只需將其定義爲已經建議。 – Qirel

+0

@Qirel我同意我的問題的答案我已經解決了問題,並學到了一些東西,所以我非常感謝我刪除了從我原來的問題中的評論 –

回答

7

這是因爲您正試圖追加到$aparts而未定義它。要修復它在foreach之前定義它:

$aparts = ""; 
foreach($_POST['parts'] as $key => $value){ 
    $aparts .= $value.','; 
} 

PHP也有一個名爲implode()功能,具有完全相同的結果作爲你的foreach循環:

$aparts = implode(",", $_POST['parts']); 
+0

謝謝:)我用你的另外回答它是爲你的答案 –

+0

做到這一點感謝,並,將讓你的陣列從字符串,一旦你讀它的爆炸()函數一個整潔的方式。 http://php.net/manual/en/function.explode.php - 但是,如果你的任何'部分'有逗號,這會導致問題。 –

3

你可以使用serialize()在插入時和unserialize()從數據庫中讀取數據時。這將需要一個數組併爲您創建一個可以保存的字符串。然後,unserialize接受該字符串並再次創建該數組。

即使您的內容中有逗號,這也可以正常工作。您當前的方法(和對方的回答)不會,它將一個字符串用逗號您的最終陣列分成兩個獨立的條目。

1

您應該foreach語句之前聲明$aparts

$aparts = ''; 
foreach ($_POST['parts'] as $key => $value) { //...