Можно ли группировать переменные $_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']"/>