Извините за это название, если оно сбивает с толку, постарался описать мой вопрос.
Итак, у меня есть несколько входов в форме, которые я хочу «сгруппировать», так как они являются частью одной и той же сущности.
Я знаю, как использовать скобки, чтобы они помещались в один массив (с помощью PHP), например, при использовании флажков, но моя ситуация немного отличается.
У меня есть 3 входа для person
и, в форме, может быть несколько people
,
Вот как бы это выглядело, если бы в форме был только один человек:
<input type="text" name="first_name"/>
<input type="text" name="last_name"/>
<input type="text" name="email"/>
Но мне нужно учесть несколько people
и я хотел бы, чтобы все они проходили через один массив в PHP, например так:
// print_r($_POST['people']);
array(
[0] => array(
'first_name'=>'john'
'last_name' => 'smith'
'email'=>'[email protected]'
)
[1] => array(
'first_name'=>'john2'
'last_name' => 'smith2'
'email'=>'[email protected]'
)
)
Я пытался (1):
<input type="text" name="people[][first_name]"/>
<input type="text" name="people[][last_name]"/>
<input type="text" name="people[][email]"/>
и я попробовал (2):
<input type="text" name="people[first_name][]"/>
<input type="text" name="people[last_name][]"/>
<input type="text" name="people[email][]"/>
и я попробовал (3):
<input type="text" name="people[][first_name][]"/>
<input type="text" name="people[][last_name][]"/>
<input type="text" name="people[][email][]"/>
Ничто из вышеперечисленного не входит в структуру, о которой я упоминал выше.
Как мне сделать $_POST['people']
выглядеть массив, который я показал выше?
РЕДАКТИРОВАТЬ:
Вот что (1) производит:
Array
(
[0] => Array
(
[first_name] => john
)
[1] => Array
(
[last_name] => smith
)
[2] => Array
(
[email] => [email protected]
)
[3] => Array
(
[first_name] => john2
)
[4] => Array
(
[last_name] => smith2
)
[5] => Array
(
[email] => [email protected]
)
)
Благодарю.
Ты должен эксплицитно установить индекс для группы элементов. В вашем случае это будет:
<form method="POST" action="">
<input type="text" name="people[0][first_name]"/>
<input type="text" name="people[0][last_name]"/>
<input type="text" name="people[0][email]"/>
<hr />
<input type="text" name="people[1][first_name]"/>
<input type="text" name="people[1][last_name]"/>
<input type="text" name="people[1][email]"/>
<hr />
<input type="text" name="people[2][first_name]"/>
<input type="text" name="people[2][last_name]"/>
<input type="text" name="people[2][email]"/>
<hr />
<input type="submit" name="" value="" />
</form>
И в случае добавления нового поля в JavaScript, их имена также должны быть с явными индексами:
name="people[4][email]"name="people[5][email]"<!-- etc -->
Других решений пока нет …