多くのチェックボックスを備えたフォームを含む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フォーム変数からユーザーのチェックボックスを取得する簡単な方法はありますか?)