Есть html:
<form action="" method="POST">
<input name="testname" value="1">
<input name="testname" value="2">
<input name="testname" value="3">
<input name="testname" value="4">
<input name="testname" value="5">
<input name="testname" value="6">
<input name="testname" value="7">
<input name="testname" value="HELLO!!!">
<input type="submit">
</form>
Соответственно, у всех полей одинаковое значение атрибута name. Изменить атрибут name никак нельзя.
Сам вопрос: как получить значения ВСЕХ полей через php? При попытке обратиться к $_POST['testname'] php возвращает только ПОСЛЕДНЕЕ ЗНАЧЕНИЕ (т.е. слово HELLO!!!).
var_dump($_POST) возвращает:
array(1) {["testname"]=> string(8) "HELLO!!!" }
Возможно ли как - нибудь исправить работу php скрипта, и сделать так, чтобы он показывал все значения полей?
Попробуйте так:
$input = file_get_contents('php://input');
$array = explode('&', $input);
В результате $array будет содержать такой массив:
array:8 [
0 => "testname=1"
1 => "testname=2"
2 => "testname=3"
3 => "testname=4"
4 => "testname=5"
5 => "testname=6"
6 => "testname=7"
7 => "testname=HELLO%21%21%21"
]
который вы можете преобразовать дальше по своему усмотрению, например, так:
$array = array_map(function($item) {
return urldecode(explode('=', $item)[1]);
}, $array);
После этого получится:
array:8 [
0 => "1"
1 => "2"
2 => "3"
3 => "4"
4 => "5"
5 => "6"
6 => "7"
7 => "HELLO!!!"
]
Продвижение своими сайтами как стратегия роста и независимости