Несколько входов с таким же именем через POST в php

Возможно ли получить несколько входов с одним и тем же именем для публикации, а затем получить доступ к ним из PHP? Идея такова: у меня есть форма, которая позволяет вводить неопределенное количество физических адресов вместе с другой информацией. Если бы я просто дал каждому из этих полей одно и то же имя для нескольких записей и передал эти данные через почту, сможет ли PHP получить к нему доступ?

Скажем, например, у меня есть пять входных данных на одной странице с именем "xyz", и я хочу получить к ним доступ с помощью PHP. Могу ли я сделать что-то вроде:

    $_POST['xyz'][0]

Если это так, это сделало бы мою жизнь в десять раз проще, поскольку я мог бы отправить неопределенный объем информации через форму и обработать ее сервером, просто перейдя через массив элементов с именем "xyz".

Ответ 1

Измените имена ваших входов:

<input name="xyz[]" value="Lorem" />
<input name="xyz[]" value="ipsum"  />
<input name="xyz[]" value="dolor" />
<input name="xyz[]" value="sit" />
<input name="xyz[]" value="amet" />

Тогда:

$_POST['xyz'][0] == 'Lorem'
$_POST['xyz'][4] == 'amet'

Если это так, это сделало бы мою жизнь в десять раз проще, поскольку я мог бы отправить неопределенный объем информации через форму и обрабатывать ее сервером, просто перейдя через массив элементов с помощью имя "xyz".

Обратите внимание, что это, вероятно, неправильное решение. Очевидно, что это зависит от данных, которые вы отправляете.

Ответ 2

В вашем html вы можете передать массив для имени i.e

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

Таким образом, php получит массив адресов.

Ответ 3

Для кого-либо, кто это найдет, стоит отметить, что вы можете установить значение ключа во входном имени. Благодаря ответу в POSTing Form Fields с одинаковым атрибутом имени вы также можете переводить строки или целые числа без цитирования.

В ответах предполагается, что вы не против ключевого значения, возвращаемого для PHP, но вы можете установить name=[yourval] (string или int), который затем позволяет вам ссылаться на существующую запись.

Ответ 4

Может быть:

echo "Welcome".$_POST['firstname'].$_POST['lastname'];

Ответ 5

Эрик отвечает правильно, но проблема в том, что поля не сгруппированы. Представьте, что у вас есть несколько улиц и городов, которые принадлежат друг другу:

<h1>First Address</h1>
<input name="street[]" value="Hauptstr" />
<input name="city[]" value="Berlin"  />

<h2>Second Address</h2>
<input name="street[]" value="Wallstreet" />
<input name="city[]" value="New York" />

Результат будет

$POST = [ 'street' => [ 'Hauptstr', 'Wallstreet'], 
          'city' => [ 'Berlin' , 'New York'] ];

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

<h1>First Address</h1>
<input name="address[1][street]" value="Hauptstr" />
<input name="address[1][city]" value="Berlin"  />

<h2>Second Address</h2>
<input name="address[2][street]" value="Wallstreet" />
<input name="address[2][city]" value="New York" />

Результат будет

$POST = [ 'address' => [ 
                 1 => ['street' => 'Hauptstr', 'city' => 'Berlin'],
                 2 => ['street' => 'Wallstreet', 'city' => 'New York'],
              ]
        ]