Нет. Будет доступен только последний элемент ввода.
Если вы хотите использовать несколько входов с одинаковым именем, используйте name="foo[]"
для атрибута имени входа. $_POST
будет содержать массив для foo со всеми значениями из входных элементов.
<form method="post">
<input name="a[]" value="foo"/>
<input name="a[]" value="bar"/>
<input name="a[]" value="baz"/>
<input type="submit" />
</form>
См. Ссылку HTML в Sitepoint .
.
Причина, по которой $_POST
будет содержать последнее значение, только если вы не используете []
, заключается в том, что PHP в основном просто взорвется и передаст необработанную строку запроса для заполнения $_POST
. Когда он встречает пару имя / значение, которая уже существует, он перезапишет предыдущую.
Однако вы все равно можете получить доступ к необработанной строке запроса следующим образом:
$rawQueryString = file_get_contents('php://input'))
Предположим, у вас есть такая форма:
<form method="post">
<input type="hidden" name="a" value="foo"/>
<input type="hidden" name="a" value="bar"/>
<input type="hidden" name="a" value="baz"/>
<input type="submit" />
</form>
$ rawQueryString
будет содержать a=foo&a=bar&a=baz
.
Затем вы можете использовать свою собственную логику, чтобы разобрать это в массив. Наивный подход был бы
$post = array();
foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) {
list($key, $value) = explode('=', $keyValuePair);
$post[$key][] = $value;
}
, который затем даст вам массив массивов для каждого имени в строке запроса.