這可能是一個非常愚蠢的問題,但它只是掠過我的腦海裏,我認爲這將是有趣的,肯定知道....在PHP(或任何語言)中,可以合併2個位掩碼,同時保持orignal位的「身份」?
因此,這裏的情景:
用戶有3個選擇每週的每一天:上午,下午和關閉。這些是相互排斥的選擇,所以沒有選擇在同一天同時處理AM和PM。
所以,如果我想保存自己的AM轉變和PM轉變爲獨立的位掩碼,並且用戶1選擇以下內容:
S M T W Th F Sa
A P X A X P A
我想有以下幾點:
$shifts['User1']['AM'] = 73; // 1001001
$shifts['User1']['PM'] = 34; // 0100010
現在,如果我只是想知道User1在哪一天工作過,我顯然可以這樣做:
$shifts['User1']['All'] = $shifts['User1']['AM'] | $shifts['User1']['PM'];
甚至只是:
$shifts['User1']['All'] = $shifts['User1']['AM'] + $shifts['User1']['PM'];
但如果我想要的最終結果從PM區分上午,東西的效果:
$shifts['User1']['AM'] = A00A00A;
$shifts['User1']['PM'] = 0P000P0;
從而使A和P公司都被認爲集,但
A00A00A | 0P000P0 = AP0A0PA;
有沒有這樣做的常見方式,或者我在想這完全錯誤?
有兩件事情浮現在腦海中:三元和普通老舊的這種類型的任務沒有使用位掩碼。 – Ryan 2012-03-25 02:22:16
哦,在一天結束時,我確信我要麼保持它們分開,要麼使用其他邏輯推斷等等。但是As和Ps的圖像跳進了我的腦海,我認爲它可能是其中一個「不,愚蠢,現在它是如何工作的」或「呃,只是改變基數」,所以我不得不把它扔到那裏來確認。 – Anthony 2012-03-25 02:28:59