簡體   English   中英

我需要幫助使 PHP 表單解析代碼更輕

[英]I need help making a PHP form parse code lighter

我有一個 PHP 表單,如果用戶願意,可以輸入最多 99 個項目。 我希望 PHP 不需要我解析每個單獨的項目,並且當有很多項目進入時它可以處理循環或其他事情。

目前我的 php 看起來像這樣

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

但如果只有 5% 的人在表單中輸入多個項目,我不想要 99 行代碼。

將所有輸入命名為items[] (注意[] )。 然后,您可以在一個名為$_POST['items']的數組中訪問它們。 然后,您可以遍歷所有值:

foreach($_POST['items'] as $item)
{
  // ...
}

像這樣更改輸入名稱:

<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
}

您需要像這樣命名您的輸入元素:

<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讀取它們時自動獲取同一數組中的任何元素。

另一種選擇:

foreach($_POST as $index => $value) {
  $item[$index] = $value;
}
for ($i = 1;$i<100;$i++)
{
    ${"item".$i} = $_POST['Item'.$i];
}

//or you can use variables directly
//echo ($_POST['Item1']);

或者您可以將 Item1, Item2, .... in form 更改為Items[]然后像這樣調用它

$items = $_POST['Items'];
print_r($items);
/*
array
(
    [0] => "some" 
    [1] => "text"
    [2] => "another"
    [3] => "text"          
)
*/
foreach ($_POST as $key=>$value) {
    if (substr($key, 0, 4)=="Item") {
        $item[substr($key, 4)]=$value;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM