Отличительной особенностью PHP является то, что он обрабатывает массивы в переменных запроса, поэтому, если вы публикуете строку типа ...&test[one]=two&test[three]=four
, вы можете получить доступ к test
в виде массива, используя $_REQUEST['test']
.
ОднакоСегодня я обнаружил, что существует проблема с многомерными массивами $_REQUEST
, и мне интересно, есть ли способ обойти это.
Для тестирования я использовал форму с полями:
<input name="one[one]" />
<input name="one[two]" />
<input name="three[four[five]]" />
<input name="three[four[six]]" />
После того, как это было отправлено, я использовал var_dump
, чтобы увидеть структуру массива:
array(3) {
["one"]=>
array(2) {
["one"]=>
string(0) ""
["two"]=>
string(0) ""
}
["three"]=>
array(2) {
["four[five"]=>
string(0) ""
["four[six"]=>
string(0) ""
}
}
Элемент one
указан в массиве, как и ожидалось.Но элемент three
это не так.Теперь я не буду возражать, если это просто не будет поддержано, но причина, по которой меня смущают, это причина.Посмотрите на имена подэлементов three
- four[five
и four[six
.Это не интерпретируется как массив, потому что по какой-то причине завершающий ]
, который помог бы идентифицировать эти элементы как значения массива, был потерян!
У кого-нибудь есть объяснение этому?Есть ли способ обойти это, кроме использования только одного уровня в $_REQUEST
массивах?