我知道这是可能的,我只是不知道它叫什么,谷歌也没有太大帮助。
假设您有 4 个选项可供选择,A、B、C 和 D。如果用户选择 A 和 C,您可以简单地将选择保存为 5 = 0101,或者如果用户选择 D(1000 ).
我的问题是,5保存后如何转换回A=1、B=0、C=1、D=0?
我正在尝试保存电影年龄限制,并认为这可能是最好的方法。
最佳答案
我认为该术语是 BCD(二进制编码的十进制)。
以下是您如何在您的情况下实现它:
创建代表 4 种可能选择的 4 个变量(或常量),并像这样设置它们的值:
$A = 1;
$B = 2;
$C = 4;
$D = 8;然后,对于 A、B、C 和 D 中的每个选择,添加相关变量的值。
在你存储了这个组合值之后,稍后你读回它,并且你想从存储的值中解码选择......
为此,您可以使用 &
运算符(按位 AND
)。例如,假设您存储并读回名为 $Answer
的变量的值为 5
。
将 Answer
解码为这样的选择:
$intChoiceA = ($Answer & 1);
$intChoiceB = ($Answer & 2);
$intChoiceC = ($Answer & 4);
$intChoiceD = ($Answer & 8);
要获得 True|False
选项,您可以这样做:
$bChoiceA = ($Answer & 1) > 0;
$bChoiceB = ($Answer & 2) > 0;
$bChoiceC = ($Answer & 4) > 0;
$bChoiceD = ($Answer & 8) > 0;
要获得 0|1
的选择,您可以这样做(使用 PHP Ternary Operator :
$intChoiceA = (($Answer & 1) > 0) ? 1 : 0;
$intChoiceB = (($Answer & 2) > 0) ? 1 : 0;
$intChoiceC = (($Answer & 4) > 0) ? 1 : 0;
$intChoiceD = (($Answer & 8) > 0) ? 1 : 0;
关于php - 使用二进制将选择存储为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16497214/