2016-09-23 1 views
0

Я мог бы просто устать или что-то в этом роде, но я не могу понять, как я могу, основываясь на атрибуте имени <input>, получить доступ к правильной переменной $_POST.

С простыми входами это легко;

<input name="email"> 

$inputName = 'email'; 
$inputValue = $_POST[$inputName]; 

Но как это работает с массивами?

<input name="foo[bar][0]"> 

$inputName = 'foo[bar][0]'; 
$inputValue = $_POST[$inputName]; # Obviously fails... 

Так как я могу преобразовать это в $_POST[foo][bar][0], есть некоторые встроенные функции PHP для этого?

Я не уверен, как это дубликат этого другого вопроса, видя, что он хочет получить доступ к массиву с помощью dot.separation, и я хочу использовать стандартное имя формы?

Немного больше фона; Это для обработки формы PHP класс, я в здании, в котором пользователь может добавлять поля, как это:

$form->addField(['name' => 'my[field][name]']); 

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

Если бы я делал это вручную, я бы просто написал $_POST[foo][bar][0], но теперь я никогда не узнаю имя поля, и поэтому мне нужно его разобрать.

ОК, так что это немного расширило меня, чтобы узнать, на основе имени ввода, что такое значение ввода, или, если этот вход выбран (для выбора, радиоэлементы) или если этот вход является частью из массива значений (множественный выбор, флажки). Я также хотел бы поддержать любое имя ввода, например foo[bar][][][baz][12][].

Если кто-то сделал что-то подобное, я бы хотел услышать об этом, но он наклонился ко мне, написав собственный код для этого сам.

+1

print_r ($ _ POST), и вы увидите столбец – CatalinB

+0

Зачем вам нужно преобразовать? Если вы увидите массив '$ _POST', вы получите' $ _POST [foo] [bar] [0] 'сам себя –

+0

print_r ($ _ POST), вы получите все данные для записи из этого массива – Bhavin

ответ

-2

вы получите доступ как этот $_POST['foo']['bar'][0];

+0

Конечно, но это не то, что они задают. – Quentin

Смежные вопросы