编程语言
首页 > 编程语言> > php – 回调函数返回return($var&1)?

php – 回调函数返回return($var&1)?

作者:互联网

我已经阅读了PHP Manuel大约array_filter

<?php
function odd($var)
{
    // returns whether the input integer is odd
    return($var & 1);
}

function even($var)
{
    // returns whether the input integer is even
    return(!($var & 1));
}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>

即使我在这里看到结果:

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

但我不明白这一行:return($var& 1);任何人都能解释一下这个吗?

解决方法:

$var& 1 – 是按位AND
它检查$var是否为ODD值

0 & 0 = 0,
0 & 1 = 0,
1 & 0 = 0,
1 & 1 = 1 

所以,只有当$var是ODD时,第一个回调函数才返回TRUE,第二个 – 反之亦然(! – 是逻辑NOT).

标签:php,bitwise-operators
来源: https://codeday.me/bug/20190927/1822531.html