многомерный массив сообщений из формы - PullRequest
11 голосов
/ 12 ноября 2009

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

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

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

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

Есть идеи?

Ответы [ 3 ]

30 голосов
/ 12 ноября 2009

Вы можете назвать элементы формы следующим образом:

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

Вы поняли ...

7 голосов
/ 21 февраля 2011

Здесь другой способ: сериализация массив, запись и десериализация (шифрование необязательно).

А вот пример, который работал для меня:

" 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> в виде строки запроса.

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

2 голосов
/ 12 ноября 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...