Работает ли PHP с многомерными массивами $ _REQUEST? - PullRequest
1 голос
/ 04 мая 2011

Отличительной особенностью 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 массивах?

Ответы [ 2 ]

5 голосов
/ 04 мая 2011

Попробуйте three[four][five] и three[four][six] вместо.

0 голосов
/ 04 мая 2011

Имена ввода полностью соответствуют переменным "names".

Вы написали бы в PHP:

$three['four']['five'] = 'trees';

Аналогично в вашем HTML:

<input name="three[four][five]" value="trees" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...