对复选框求和并检查php中是否设置了位
我需要使用两个函数,一个是对复选框的值求和,然后将该值放入cookie中,作为用于网站搜索页面的多个复选框之一 第二个函数检查位是否设置,我不知道这个函数应该做什么。我知道它应该做什么,但我没有看到它在函数中实际做任何事情 所有的值都是2的幂,我们应该看看求和的数字是否包含2的幂。功能如下:对复选框求和并检查php中是否设置了位,php,Php,我需要使用两个函数,一个是对复选框的值求和,然后将该值放入cookie中,作为用于网站搜索页面的多个复选框之一 第二个函数检查位是否设置,我不知道这个函数应该做什么。我知道它应该做什么,但我没有看到它在函数中实际做任何事情 所有的值都是2的幂,我们应该看看求和的数字是否包含2的幂。功能如下: function isBitSet($power, $decimal) { if((pow(2,$power)) & ($decimal)) {
function isBitSet($power, $decimal)
{
if((pow(2,$power)) & ($decimal))
{
return 1;
}
else
return 0;
}
&
是位AND运算符(不要与比较运算符&
混淆)&
逐位比较左侧和右侧的内容,对于两个输入位都有1
的每一位,只输出1
。我将展示一个示例:
在下面的示例中,最上面的数字是pow(2,$power)
,其中$power=3
。它是以二进制形式编写的,以使其更清晰:将2乘以3的幂将二进制1
向右移动了3个位置
00001000 <- this is pow(2, 3)
& 01101010 <- this is your $decimal (in binary form)
========
= 00001000
由于在PHP中,任何非零整数的计算结果均为true
,因此如果设置了该位(即$decimal
包含2的幂),则会出现if
,如果未设置该位,则会出现else
(因为&
将导致输出00000000
)
如果您需要澄清,请发表评论。希望有帮助。
pow
返回arg1
提升为arg2
的幂,例如2^2=4。您的函数似乎是一种复杂的方法,用于检查发送给它的变量是否已设置(布尔值为true),在第一种情况下,它是一个数字。手册:
$decimal contains that power of 2 -> result will be 00001000
$decimal does not contain that ^2 -> result will be 00000000