前回のシフト演算子を使って、曜日を8ビットのデータに保存する方法
日、月、火、水、木、金、土 を選択できるチェックボックスを用意し、それぞれの値を0~6とする。
そして、チェックされた値を$arrayに格納したとする。
処理側のスクリプトで、左シフト演算子を使って以下のように処理する。
foreach ( $array as value) {
$weekday += 1 << $value;
}
日曜日 → 1 << 0 → 20 → 1 → 00000001
月曜日 → 1 << 1 → 21 → 2 → 00000010
火曜日 → 1 << 2 → 22 → 4 → 00000100
水曜日 → 1 << 3 → 23 → 8 → 00001000
木曜日 → 1 << 4 → 24 → 16 → 00010000
金曜日 → 1 << 5 → 25 → 32 → 00100000
土曜日 → 1 << 6 → 26 → 64 → 01000000
数値の和をビット表記すると、どの曜日が選択されたか、わかるようになる。
例:12を2進数表記すると 00001100 となり、火と水曜日が選択されているとわかる。