Можно ли группировать переменные $_POST?

У меня есть огромная форма (для внутренней CMS), которая состоит из нескольких разделов, некоторые из них являются необязательными, некоторые из них являются обязательными. Все находится в сложной форме (это должно быть так, без аякса, никаких других способов:-()

Так как в Dilbertesque все меняется каждый раз, мне было интересно, есть ли простой способ группировки данных $_POST, я имею в виду отправку POST следующим образом:

$_POST['form1']['datax']

или легко получить данные с серверной стороны, и я легко имею в виду, что я должен явно заявить:

$array1 = array($_POST['datax'],$_POST['datay'],...);

$array2 = array($_POST['dataalpha'],$_POST['dataomega'],...);

так как существует около 60 полей.

Надеюсь, я смог объяснить это хорошо и как всегда очень благодарен вам.

Ответ 1

Если вы укажете свои входные элементы, похожие на массивы, они попадут в массив PHP $_POST (или $_GET) как массив:

<input type="text" name="foo[]" value="a"/>
<input type="text" name="foo[]" value="b" />
<input type="text" name="foo[]" value="c" />
<input type="text" name="foo[bar]" value="d" />
<input type="text" name="foo[baz][]" value="e" />
<input type="text" name="foo[baz][]" value="f" />

Переход к:

print_r($_POST)
foo => array (
    0 => a
    1 => b
    2 => c
    bar => d
    baz => array(
        0 => e
        1 => f
    )
)

Ответ 2

Если вы правильно назовете свои входы, вы можете это сделать. Пример:

<input type="text" name="textInput[]" />
<input type="text" name="textInput[]" />

Это заполнит массив в $_POST с именем textInput. То есть:

$_POST['textInput'][0] == "whatever the first was set to be"
$_POST['textInput'][1] == "whatever the second was set to be"

Ответ 3

Используя квадратные скобки после имени ввода, он будет сгруппирован в PHP:

<input name="foo[]" type="text" value="1" />
<input name="foo[]" type="text" value="2" />

Вы также можете создать ассоциативный массив:

<input name="foo[bar]" type="text" />

Я думаю, многомерные массивы также будут работать, но я не уверен, действительно ли я это пробовал.

Изменить: здесь то же самое ответил в FAQ PHP.

Ответ 4

вы можете использовать поля формы следующим образом:

<input type="text" name="form1['datax']"/>