2010-08-20 16 views
1

我想要接收無限的$ _POST變量,包括一個附加數字,並將它們轉換爲數組,如貝寶形式。

例子:

<form action="mysite"> 
<input name="productname" /> 
<input name="productname1" /> 
<input name="productname2" /> 
Etc.... 
</form> 

我把它轉換成一個PHP陣列收到後:

products(gta,twilight,flowers,chocolate,ipod) 

所以這只是解釋你,我想其列爲發票。

注:請不要建議使用的產品名稱[],我想用預浸比賽做 感謝

+0

如果您認爲您可以擁有無​​限數量的$ _POST(或$ _GET)變量,則會遇到麻煩。帶有Suhosin補丁的服務器的默認最大值爲100個變量。 – stillstanding 2010-08-20 06:27:26

+0

我添加了一個我認爲你想要的解決方案。 – 2010-08-20 14:01:07

回答

4
<form action="mysite"> 
<input name="productname[]" /> 
<input name="productname[]" /> 
<input name="productname[]" /> 
Etc.... 
</form> 

然後$_POST['productname']將是一個數值數組所有值。

如果你無法控制的形式,你可以建立數組是這樣的:

$res = array(); 
foreach ($_POST as $k => $v) { 
    if (preg_match('/^productname(\d{0,})$/', $k, $matches)) 
     $res[(int) $matches[1]] = $v; 
} 
// result in $res 
+0

嗨,我已經知道,我想要編程將它變成陣列使用一些preg比賽什麼的......謝謝! – Ryan 2010-08-20 03:38:20

+0

@大衛,你能澄清一下嗎? '$ _POST ['productname']'已經是一個數組了。你不需要使用'preg_match'。 – 2010-08-20 03:41:31

+0

我知道,但我想要的形式是像貝寶,他們應該在變量的末尾添加數字 – Ryan 2010-08-20 03:42:55

0

如果他們實際上並不擁有的名稱號碼,使用:

<form action="mysite"> 
<input name="productname[]" /> 
<input name="productname[]" /> 
<input name="productname[]" /> 
Etc.... 
</form> 

PHP會將productname轉換爲數組。 FAQ有關於此功能的更多信息。

+0

嗨,我已經知道,我想通過編程將它變成陣列,使用一些preg比賽或什麼...謝謝! – Ryan 2010-08-20 03:39:12

1
<?php 
foreach($_POST as $name => $value) { 
    if(strpos($name, 'productname') === 0) { 
     // Do something with it 
    } 
} 
?> 
相關問題