我正在编写一个涉及带有许多复选框的表单的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 个复选框)总是包含在 $checked 中,无论它是否实际被选中。
还需要注意的是:如果选中,则零出现在列表中的第一个,但如果没有选中,则最后出现。
假设更改复选框的索引是不可能的,那么解决这种情况的最佳方法是什么?(相关的额外问题:有没有更简单的方法可以从 drupal 表单变量中获取用户的复选框?)