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