[英]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.