new*_*bie 3 php bitwise-operators
我已经阅读了关于array_filter的 PHP手册
<?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"));
?>
Run Code Online (Sandbox Code Playgroud)
即使我在这里看到结果:
Odd :
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Even:
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)
Run Code Online (Sandbox Code Playgroud)
但我不明白这一行:return($var & 1);有人可以解释一下吗?
你知道 &&是AND,但你可能不知道的&是有点明智 AND。
该&运营商工作在一个位水平,这是逐位。您需要考虑操作数的二进制表示。
例如
710 & 210 = 1112 & 0102 = 0102 = 210
例如,该表达式$var & 1用于测试最低有效位分别是1或0、奇数还是偶数。
$var & 1
010 & 110 = 0002 & 0012 = 0002 = 010 = false (even)
110 & 110 = 0012 & 0012 = 0012 = 110 = true (odd)
210 & 110 = 0102 & 0012 = 0002 = 010 = false (even)
310 & 110 = 0112 & 0012 = 0012 = 110 = true (odd)
410 & 210 = 1002 & 0012 = 0002 = 010 = false (even)
and so on...
| 归档时间: |
|
| 查看次数: |
2805 次 |
| 最近记录: |