return return 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 – побитовое И проверяет, является ли $var значением ODD

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

    поэтому первая функция обратного вызова возвращает TRUE только в том случае, если $ var является ODD, а second – vise versa (! – является логическим NOT).

    Вы знаете, что && есть AND , но то, что вы, вероятно, не знаете, является & is bit-wise AND .

    Оператор & работает на уровне бит, он поразмерно. Вам нужно думать в терминах двоичных представлений операндов.

    например

    7 10 & 2 10 = 111 2 & 010 2 = 010 2 = 2 10

    Например, выражение $var & 1 используется для проверки того, является ли младший значащий бит 1 или 0 , нечетным или даже соответствующим образом.

    $var & 1

    0 10 & 1 10 = 000 2 & 001 2 = 000 2 = 0 10 = false (even)

    1 10 & 1 10 = 001 2 & 001 2 = 001 2 = 1 10 = true (odd)

    2 10 & 1 10 = 010 2 & 001 2 = 000 2 = 0 10 = false (even)

    3 10 & 1 10 = 011 2 & 001 2 = 001 2 = 1 10 = true (odd)

    4 10 & 2 10 = 100 2 & 001 2 = 000 2 = 0 10 = false (even)

    and so on...

     & 

    это побитовый оператор. Он выполняет AND с бит-ответчиком $var и 1

    В основном он проверяет последний бит $ var, чтобы увидеть, является ли число четным или нечетным

    Пример с двоичным двоичным ключом $ var 000110 и 1

     000110 & 1 ------ 0 

    0 (false) в этом случае возвращается, поэтому число равно, и ваша функция возвращает false соответственно

    Он выполняет побитовое И с $ var и 1. Поскольку 1 имеет только последний бит, $var & 1 будет только true, если последний бит установлен в $ var. И так как четные числа никогда не имеют последнего установленного бита, если значение AND истинно, число должно быть нечетным.

    & является побитовым "и" оператором. С 1, 3, 5 (и другими нечетными номерами) $var & 1 приведет к «1», с 0, 2, 4 (и другими четными числами) – в «0».

    Нечетное число имеет нулевой ( наименее значимый ) бит, установленный в 1 :

      v 0 = 00000000b 1 = 00000001b 2 = 00000010b 3 = 00000011b ^ 

    Выражение $var & 1 выполняет побитовое И- операцию между $ var и 1 ( 1 = 00000001b ). Таким образом, выражение вернется:

    • 1, когда $var имеет нулевой бит, установленный в 1 (нечетное число)
    • 0, когда $var имеет нулевой бит, равный 0 (четное число)

    & является поразрядным И на $ var.

    Если $ var является десятичным числом 4, это двоичный код 100. 100 & 1 равно 100, потому что самая правая цифра равна 0 в $ var – и 0 & 1 равна 0, и, следовательно, четность равна 4.

    он возвращает 0 или 1, в зависимости от вашего $ var

    если $ var – нечетное число, например. (1, 3, 5 …) он $ var & 1 возвращает 1, в противном случае (2, 4, 6) $ var & 1 возвращает 0