ビット演算を用いたチェックボックスの制御
チェックボックスの表現にビット演算を用いることで、
データベースへの格納・取出しが1項目で収まるので、
ディスクサイズやCPUにやさしくなる。
ただし、整数型を用いると、31bitまでしか使えないということに注意。
32bit 以上の整数を扱う場合は、以下の関数が使えるらしい(未確認)
http://php.net/manual/ja/ref.bc.php
<html> <body> <form action="test.php"> <?php $bitmap = 0; if (is_array($_REQUEST['bitmap'])) { foreach ($_REQUEST['bitmap'] as $key => $val) { $bitmap |= $val; } } $bitmap_master = array(1 => "first", 2 => "second", 4 => "third"); foreach ($bitmap_master as $id => $name) { ?><input type="checkbox" name="bitmap[]" value="<?php echo $id ?>" <?php echo (($bitmap & $id) > 0) ? "checked" : "" ?>><?php echo $name?><?php } ?> <input type="submit"> </form> </body> </html>