我有一个PHP表单,允许用户输入99个项目,如果他们这样做的话。我希望PHP不需要我解析每个个体项目,它可以处理循环或什么时候有很多项目输入。
目前我的php看起来像这样
$item1 = $_POST['Item1'] ;
$item2 = $_POST['Item2'] ;
$item3 = $_POST['Item3'] ;
$item4 = $_POST['Item4'] ;
$item5 = $_POST['Item5'] ;
// etc, etc
但如果只有5%的人在表单中输入多个项目,我不想要99行代码。
答案 0 :(得分:4)
将所有输入命名为items[]
(请注意[]
)。然后,您可以在名为$_POST['items']
的数组中访问它们。然后,您可以遍历所有值:
foreach($_POST['items'] as $item)
{
// ...
}
答案 1 :(得分:1)
更改输入名称,如下所示:
<input type="text" name="items[]"/>
<input type="text" name="items[]"/>
<input type="text" name="items[]"/>
你会得到一个数组:
$items = $_POST['items'] ;
foreach($items as $item){
// walk throug items and do something
}
答案 2 :(得分:1)
您需要将输入元素命名为:
<input type="text" name="Item[]" value="A" />
<input type="text" name="Item[]" value="B" />
<input type="text" name="Item[]" value="C" />
然后在PHP中,您将在$_POST
中看到
array(
0 => 'A',
1 => 'B',
2 => 'C'
)
这是一个标准的PHP技巧,您可以使用它从$_POST
和$_GET
读取同一数组中的任何元素。
答案 3 :(得分:1)
另一种选择:
foreach($_POST as $index => $value) {
$item[$index] = $value;
}
答案 4 :(得分:0)
for ($i = 1;$i<100;$i++)
{
${"item".$i} = $_POST['Item'.$i];
}
//or you can use variables directly
//echo ($_POST['Item1']);
或者您可以将表单中的Item1,Item2,....更改为Items[]
,然后将其称为
$items = $_POST['Items'];
print_r($items);
/*
array
(
[0] => "some"
[1] => "text"
[2] => "another"
[3] => "text"
)
*/
答案 5 :(得分:0)
foreach ($_POST as $key=>$value) {
if (substr($key, 0, 4)=="Item") {
$item[substr($key, 4)]=$value;
}
}