@prodigitalson так модераторы должны действовать / вести себя! Я подчеркиваю это для других, чтобы признать!

имаю основы использования входных HTML-форматированных имен. Если бы у меня была форма с переменным количеством входов 'item', я мог бы сделать что-то подобное для каждого из них:

<input name='item[]' type='text' />

И когда я получаю элементы из массива $ _POST, я могу перебирать их так:

$items = $_POST['item'];
foreach($items as $item) {
}

Но мой вопрос немного сложнее. У меня есть форма, где пользователи могут нажать кнопку «добавить один», и в нижней части формы появится новая строка. Каждая новая строка содержит входные данные «name» и «description».

Итак, изначально я думал, что сделаю это:

<input name='item[name][]' type='text' />
<input name='item[description][]' type='text' />

И затем перебрать их так:

$items = $_POST['item'];
foreach($items as $item) {
  print $item['name'] . ' ' . $item['description'];
}

Но вместо того, чтобы работать, как я надеялся, он структурирует массив 'item' так, чтобы я мог получить доступ к первому имени элемента как$item['name'][0] а не как$item[0]['name'].

Затем я перевернул его так, чтобы мои входные данные были названы так:

<input name='item[][name]' type='text' />
<input name='item[][description]' type='text' />

Но это привело к отдельному «пункту» для каждого «имени» и для каждого «описания», а не к группировке каждой пары в один «элемент».

Мне действительно не нравится иметь массивы 'name' и отдельный массив 'description'. Я бы предпочел массивы 'item' с каждым массивом, содержащим поля 'name' и 'description'. Есть ли способ сделать это без генерации индекса в моем JavaScript? Поскольку люди могут добавлять и удалять их динамически, для моего javascript очень сложно рассчитать соответствующий индекс для следующего элемента. Нет ли способа сделать это в общем?

 Mark Elliot17 янв. 2011 г., 05:00
Что такого плохого в массивеname и массивdescription? - вы можете собрать их позже вместе.
 Mark Elliot17 янв. 2011 г., 05:08
Ну, единственный способ преодолеть вашу проблему с именами - это поставить цифры в пустые скобки, что кажется худшим из доступных вариантов, не так ли?
 fumplr17 янв. 2011 г., 05:04
@Mark E: У меня обсессивно-компульсивное расстройство, и это действительно очень беспокоит меня до такой степени, что я не могу просто взломать его и продолжить. Все мои другие массивы (например, из базы данных) - это индекс строки в качестве первого измерения и имя свойства в качестве второго.

Ответы на вопрос(1)

что вы хотите, но если это поможет, вот некоторый код, чтобы собрать его воедино, который, я думаю, будет работать (сitem_name[] а такжеitem_description[]):

$items_desc = $_POST["item_description"];
$items_name = $_POST["item_name"];
$items = array();
for ($i = 0; $i < count($items_name); $i++)
{
    $items[] = array("name" => $items_name[$i], "description" => $items_desc[$i]);
}
 prodigitalson17 янв. 2011 г., 05:20
использовал кнопку форматирования в вашем блоке кода, потому что он не прошел с вами должным образомpre теги. надеюсь, ты не возражаешь.
 whispers19 июл. 2017 г., 21:29
@prodigitalson так модераторы должны действовать / вести себя! Я подчеркиваю это для других, чтобы признать!
 crimson_penguin17 янв. 2011 г., 05:22
Спасибо! Я действительно должен прочитать о том, как правильно разместить код ...

Ваш ответ на вопрос