对复选框求和并检查php中是否设置了位

对复选框求和并检查php中是否设置了位,php,Php,我需要使用两个函数,一个是对复选框的值求和,然后将该值放入cookie中,作为用于网站搜索页面的多个复选框之一 第二个函数检查位是否设置,我不知道这个函数应该做什么。我知道它应该做什么,但我没有看到它在函数中实际做任何事情 所有的值都是2的幂,我们应该看看求和的数字是否包含2的幂。功能如下: function isBitSet($power, $decimal) { if((pow(2,$power)) & ($decimal)) {

我需要使用两个函数,一个是对复选框的值求和,然后将该值放入cookie中,作为用于网站搜索页面的多个复选框之一

第二个函数检查位是否设置,我不知道这个函数应该做什么。我知道它应该做什么,但我没有看到它在函数中实际做任何事情

所有的值都是2的幂,我们应该看看求和的数字是否包含2的幂。功能如下:

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