2014-02-06 36 views
0

我已經動態創建了一個數組,並且我想提取數組並將每個項目放入它自己的變量中。使用extract()的問題PHP

這裏是我的PHP:

$bar = $_POST['foo']; 
extract($bar); 
echo $1; 

foo是從我做了一個形式的陣列。

每當我運行該腳本,我得到這個錯誤:

Parse error: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '$' in /Application/... 

當我我的代碼更改爲:

$bar = $_POST['foo']; 
extract($bar, EXTR_PREFIX_ALL, "bar_"); 
echo $bar_1; 

我得到未定義的變量錯誤。

請幫幫我。

UPDATE:

我的第一個代碼是信息,另一個人可能會遇到這個問題,有不知道這個問題有什麼不對。第二塊代碼是我的實際代碼。

M的意圖是將每個數組項目輸入到一個mysql表中的不同字段。我沒有寫完整的代碼,因爲這個extract()的東西似乎沒有工作。

更新2:

$ _ POST [ '富']的複選框的值的數組中的PHP

+0

向我們展示了一個完整的代碼塊,以便我們看到實際意圖:P – JuanBonnett

+0

開始時有什麼內容? 'var_dump($ _ POST);' –

+0

請閱讀[php.net](http://us2.php.net/extract#refsect1-function.extract-notes)上的警告:**不要使用'extract() '在不可信的數據上(即'$ _GET','$ _FILES'等)**。 –

回答

1

變量不能以數字開頭:

echo $1; 

這是無效的,並且會拋出一個錯誤。

您也正在使用提取不當,因爲您在可能或不可能是數組的東西上使用它。我們不能保證$ _POST ['foo']是一個關聯數組(它不是),這是唯一的數組類型抽取。提取使用關聯數組中的鍵來創建新變量。

+1

我知道,這就是爲什麼我將EXTR_PREFIX_ALL,「bar_」添加到提取函數 – nitrous

+0

我想知道爲什麼我的提取不起作用 – nitrous

+0

我已經回答了上述兩個問題。 – Zarathuztra

0
foreach($_POST['foo'] as $key=>$value) { 
    ${"itemnumber".(string)$key} = $value; 
} 

現在,您可以存取權限$ itemnumber2 --->等於數組項中的位置2

編輯:我只是測試它在writecodeonline.com和它的作品:

$arr = array('one', 'two'); 

foreach($arr as $key=>$value) { 
    ${"itemnumber".(string)$key} = $value; 
} 

echo $itemnumber1; //echoes: two 
+0

複選框數組不會關聯,它將是數字。 – Zarathuztra

+0

但檢查,我正在使用變量變量 – JuanBonnett

1
$bar = $_POST['foo']; 
extract($bar, EXTR_PREFIX_ALL, "bar_"); 
echo $bar_1; 

http://php.net/extract

Prefixes are automatically separated from the array key by an underscore character.

你提取變量命名爲$bar__1(下劃線)。

但是請回答所有人,「不要在不可信數據上使用extract()」。
這是非常不安全的。
你不應該這樣做