Я пишу модуль drupal, который включает форму со множеством флажков. Э.Г.
$form['myform_checkboxes'] = array('#type' => 'checkboxes', ...)
Я сделал ключ для этих флажков числовым, начиная с 0. Например.
$form['myform_checkboxes']['#options'][0] = '0:00';
$form['myform_checkboxes']['#options'][1] = '1:00';
После реализации функции myform_checkboxes_submit я обнаружил, что трудно интерпретировать, что было введено пользователем. На межсетях я нашел несколько хороших строк кода, которые делали то, что мне было нужно.
$checked = array_intersect(
array_keys($form_state['values']['myform_checkboxes']),
array_values($form_state['values']['myform_checkboxes'])
);
Кажется, это прекрасно работает; переменная $ checked является массивом, включающим только проверенные флажки. Единственная проблема заключается в том, что значение 0 (представляющее 0-й флажок) всегда включается в $ флажок, независимо от того, был ли он проверен или нет.
Также полезно отметить: ноль появляется первым в списке, если он был отмечен, но последним, если это не так.
Как лучше всего разрешить эту ситуацию, если предположить, что об изменении индексации флажков не может быть и речи? (Связанный бонусный вопрос: есть ли более простой способ получить флажки пользователя из переменных формы drupal?)