многомерный массив сообщение из формы

Я хочу знать, как опубликовать многомерный массив?

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

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

$_POST['users'] = array(
  array(name, email),
  array(name2, email2),
  array(name3, email3)
);

Любые идеи?


person Basit    schedule 12.11.2009    source источник
comment
связанные: stackoverflow.com/questions/1548159/   -  person cregox    schedule 21.02.2011


Ответы (3)


Вы можете назвать элементы формы так:

<input name="users[1][name]" />
<input name="users[1][email]" />
<input name="users[2][name]" />
<input name="users[2][email]" />
...

Вы поняли ...

person Franz    schedule 12.11.2009
comment
как насчет пользователей [] [имя], мне нужно установить идентификатор (1, 2 ..)? - person Basit; 12.11.2009
comment
Неа. Вы тоже можете пойти с users[]. - person Franz; 12.11.2009
comment
Как насчет ситуации, когда количество пользователей не определено заранее, скажем, пользователь нажимает кнопку +, и открывается новый набор полей, и они могут фактически не добавлять пользователей - person Pila; 14.11.2017
comment
@Pila Помогает ли предыдущий комментарий? - person Franz; 27.11.2017
comment
В итоге я использовал jQuery для динамического создания новых полей ввода с именем, используя счетчик, например: name = users [+ i +] [name] - person Pila; 28.11.2017

Вот еще способ: сериализовать массив, опубликовать и десериализовать (шифрование необязательно).

И вот пример, который у меня сработал:

"send.php":

<input type="hidden" name="var_array" value="<?php echo base64_encode(serialize($var_array)); ?>">

"receive.php":

if (isset($_POST['var_array'])) $var_array = unserialize(base64_decode($_POST['var_array']));

При этом вы можете просто использовать $var_array, как если бы он был разделен между двумя файлами / сеансами. Конечно, в этом send.php должен быть <form>, но вы также можете отправить его в <a> как строку запроса.

Этот метод имеет большое преимущество при работе с многомерными массивами.

person cregox    schedule 21.02.2011
comment
Отличное решение. Работает как шарм. Спасибо. - person denislexic; 29.04.2011
comment
@denislexic Я очень рад, что кому-то понравилось! :) - person cregox; 29.04.2011
comment
И просто лучшее решение. Спасибо :) - person w3spi; 22.07.2015

Что ж, вам нужно будет где-то сделать петлю. Если вы называете каждый элемент формы индексом (как предлагает Франц), вы выполняете цикл на стороне PHP.

Если вы хотите использовать Javascript для выполнения цикла, пусть ваша форма onSubmit () создаст строку JSON для передачи в PHP. Затем попросите PHP получить его так:

json_decode($_POST['users'], true);

Второй аргумент говорит ему создавать массивы вместо анонимных объектов.

person Benjamin Cox    schedule 12.11.2009