按位運算符只能在PHP中使用整數,而在64位服務器上的最大整數大小是2^63。如果我創建一個大於它的值,它會將我的變量轉換爲浮點數,並且按位運算符將停止運行。我有以下示例:如何使這個按位代碼工作?
<?php
$CAN_DANCE = 2;
$CAN_SING = 4;
$CAN_PLAY = 8;
$CAN_BEGOD = pow(2,64);
$userperms = $CAN_PLAY | $CAN_DANCE | $CAN_SING | $CAN_BEGOD;
if($userperms & $CAN_DANCE)
echo 'This will work';
if($userperms & $CAN_BEGOD)
echo 'This will not work';
?>
當然它會返回針對第一檢查真正作爲後者我將其分配到2^64是一個整數,它錯誤地太大那小於2^63但是返回false。有沒有辦法讓它工作超過2^63?否則,我將只能夠使用最多63個不同項目的聲調。
這仍然是64個不同的項目。你忘記2^0。 – slebetman
你確定嗎?整數| 0會返回0這將被解釋爲假它不會?無論哪種方式,你知道一個解決方案?如果是這樣,將不勝感激,謝謝! Dave –
@Dave 2^0 = 1,而不是0. – FtDRbwLXw6