我需要帮助使PHP表单解析代码更轻松

时间:2011-06-29 14:10:53

标签: php forms post

我有一个PHP表单,允许用户输入99个项目,如果他们这样做的话。我希望PHP不需要我解析每个个体项目,它可以处理循环或什么时候有很多项目输入。

目前我的php看起来像这样

$item1 = $_POST['Item1'] ;
$item2 = $_POST['Item2'] ;
$item3 = $_POST['Item3'] ;
$item4 = $_POST['Item4'] ;
$item5 = $_POST['Item5'] ;
// etc, etc

但如果只有5%的人在表单中输入多个项目,我不想要99行代码。

6 个答案:

答案 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;
    }
}