У меня следующая структура формы.

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

Select users : <input type="radio" name="user_id[]" />
Select Duration :<input type="radio" name="six_months[]" />
OR : <input type="radio" name="one_year[]" />
OR : <input type="radio" name="three_year[]" />

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

Теперь как я смогу различать значения , которые user X имеют six months и user Y имеют one year.

Есть ли лучший способ / подход / лучшая практика?

2
Dip 13 Мар 2018 в 16:08

2 ответа

Лучший ответ

Используйте то же имя для поля продолжительности, что и duration[], вы сможете получить массив, а затем просто использовать этот массив в дальнейшем.

1
Gammer 16 Апр 2018 в 10:45

Если вы можете настроить свой объект формы так, чтобы он был более согласованным, если вы добавите идентификатор, а не полагаетесь на индексы. Подобно:

Select users : <input type="radio" name="user_id[skck1][]" />
Select Duration :<input type="radio" name="six_months[skck1][]" />

Или, если нет, тогда используйте этот php-код для сопоставления индексов.

$x = array(1,2,3,4);
$y = array('a','b','c','d');

$results = array();
foreach($x as $k=>$v){
  $results[] = array('x'=>$v, 'y'=>$y[$k]);
}

print_r($results);

Перед этим вам также необходимо подтвердить свою форму, чтобы пользователь должен был выбрать / проверить все поля, иначе ваши индексы не будут синхронизированы.

0
Shoaib 13 Мар 2018 в 13:25