2, "c"=>3, "d"=>4, "e"=>5); $array2 = array(6, 7, 8, 9, 10, 1-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:07:33 24 4
gpt4 key购买 nike

我已经阅读了关于 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"));
?>

即使我在这里看到结果:
Odd :
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Even:
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)

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

最佳答案

你知道&&AND ,但你可能不知道的是 &是按位 AND .&运算符在位级别工作,它是按位的。您需要考虑操作数的二进制表示。
例如

710 & 210 = 1112 & 0102 = 0102 = 210


例如,表达式 $var & 1用于测试最低有效位是否为 10 , 奇数或偶数。

$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...

关于php - 回调函数返回 return($var & 1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com