Мне нужна помощь для облегчения разбора PHP-кода - PullRequest
1 голос
/ 29 июня 2011

У меня есть форма PHP, которая позволяет пользователям вводить до 99 элементов, если они того пожелают. Я надеялся, что PHP не нуждается в том, чтобы я анализировал каждый отдельный элемент, и он может справиться с выполнением цикла или чего-то еще, когда вводится много элементов.

В настоящее время мой PHP выглядит следующим образом

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

Но я не хочу 99 строк кода, если только 5% людей вводят в форму более одного элемента.

Ответы [ 6 ]

4 голосов
/ 29 июня 2011

Все входы имеют имя items[] (обратите внимание на []).Затем вы можете получить к ним доступ в массиве с именем $_POST['items'].Затем вы можете перебрать все значения:

foreach($_POST['items'] as $item)
{
  // ...
}
1 голос
/ 29 июня 2011

Другая альтернатива:

foreach($_POST as $index => $value) {
  $item[$index] = $value;
}
1 голос
/ 29 июня 2011

Вам нужно назвать ваши входные элементы так:

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

1 голос
/ 29 июня 2011

измените имена ввода следующим образом:

<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
}
0 голосов
/ 29 июня 2011
foreach ($_POST as $key=>$value) {
    if (substr($key, 0, 4)=="Item") {
        $item[substr($key, 4)]=$value;
    }
}
0 голосов
/ 29 июня 2011
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"          
)
*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...