Пример:Что здесь означает этот оператор?
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
что значит, что предположим, значит?
Пример:Что здесь означает этот оператор?
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
что значит, что предположим, значит?
Это bitwise not operator (также называемый дополнением). Это биты, установленные в ~ $a
, это те, которые не установлены в $a
.
Итак
E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE
это биты, установленные в E_ALL
и те, которые не установлены в E_STRICT
, E_WARNING
и E_NOTICE
. В основном это говорит о всех ошибках, кроме строгих предупреждений и предупреждений.
Это bitwise-not operator. Например, побитовое отрицание числа с двоичным представлением 01011110
будет 10100001
; каждый бит перевернут в противоположную сторону.
Смотрите Bitwise Operators: это "не" оператор (цитирую):
~ $a
биты, которые установлены в$a
являются не установлены, и наоборот.
Это означает, принимая пример вдохновленный от того, что вы в курсе, что эта часть кода:
var_dump(decbin(E_STRICT));
var_dump(decbin(~E_STRICT));
Получит вам этот вывод:
string '100000000000' (length=12)
string '11111111111111111111011111111111' (length=32)
(Добавить пара 0
для заполнения слева от первой строки, и вы увидите, что я имею в виду)
Удаление отступов от второго выхода, вы получите:
100000000000
011111111111
Что означает, что оператор ~
дал 0
бит для каждого бита, который был равен 1
в intput - и наоборот ,
Это not
Побитовый Оператор. Читайте об операторах поразрядными здесь:
Различие между побитового (&, |, ~) и не битовые (& &, ||,!) Операторы в том, что побитовое применяются через все биты в целочисленном, а не битовое отношение - целое число как одно значение «истинное» (отличное от нуля) или «ложное» (ноль).
Скажите, $flag_1 = 00000001
и $flag_2 = 00000010
.Оба будут «истинными» для небитовых операций, ($flag_1 && $flag_2
«истинно»), в то время как результат $flag_1 & $flag_2
будет 00000000, а результат $flag_1 | $flag_2
будет 00000011. ~$flag_2
будет 11111101, который, когда побитовое-ANDed, работает результат будет прозрачный эта позиция бит (xxxxxx0x). $flag_2
побитовое ИЛИ с результатом будет установить эту позицию бита (xxxxxx1x).
Хотя это техническое объяснение, это объяснение не поможет, если вы не осознаете, что «E_STRICT», «E_WARNING», «E_NOTICE» и др. и др. являются целыми числами и одновременно объединяются с '&' побитовым оператором. – IQAndreas