ビット演算を用いたチェックボックスの制御


チェックボックスの表現にビット演算を用いることで、
データベースへの格納・取出しが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>