前回のシフト演算子を使って、曜日を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 となり、火と水曜日が選択されているとわかる。

おすすめの記事