Esempio:Cosa significa questo operatore qui?
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
questo cosa vorresti dire?
Esempio:Cosa significa questo operatore qui?
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
questo cosa vorresti dire?
È il bitwise not operator (chiamato anche "complemento"). I bit impostati in ~ $a
sono quelli che non sono impostati in $a
.
Allora
E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE
è il bit impostati in E_ALL
e quelli che non impostato in E_STRICT
, E_WARNING
e E_NOTICE
. Questo in pratica dice tutti gli errori tranne gli errori severi, di avvertimento e di avviso.
È il bitwise-not operator. Ad esempio la negazione bit per bit di un numero con rappresentazione binaria 01011110
sarebbe 10100001
; ogni singolo bit è invertito al suo opposto.
Vedi Bitwise Operators: è il "non" operatore (citando):
~ $a
bit impostati in$a
sono non impostato, e viceversa.
Il che significa, prendendo un esempio ispirato da ciò che hai postato, che questa porzione di codice:
var_dump(decbin(E_STRICT));
var_dump(decbin(~E_STRICT));
ti porterà questa uscita:
string '100000000000' (length=12)
string '11111111111111111111011111111111' (length=32)
(Aggiungi un coppia di 0
per imbottitura a sinistra della prima riga, e vedrete cosa intendo)
Rimozione l'imbottitura dalla seconda uscita, si ottiene:
100000000000
011111111111
Il che significa che l'operatore ~
ha dato un po '0
per ogni bit che è stato pari a 1
nel gli input - e viceversa ,
È l'operatore not
bit a bit. Leggi operatori bit a bit qui:
La distinzione tra bit a bit (&, |, ~) e non-bit a bit (& &, ||,!) Gli operatori è che bit a bit vengono applicati attraverso tutti bit nel numero intero, mentre non a un bit viene considerato un intero come un singolo valore "vero" (diverso da zero) o "falso" (zero).
Say, $flag_1 = 00000001
e $flag_2 = 00000010
.Entrambi sarebbero "veri" per operazioni non bit a bit, ($flag_1 && $flag_2
è "true"), mentre il risultato di $flag_1 & $flag_2
sarebbe 00000000 e il risultato di $flag_1 | $flag_2
sarebbe 00000011. ~$flag_2
sarebbe 11111101, che quando bitwise-AND a un utente in esecuzione risultato sarebbe chiaro quella posizione di bit (xxxxxx0x). $flag_2
bit a bit - OR con un risultato in esecuzione imposta in quella posizione di bit (xxxxxx1x).
Sebbene questa sia la spiegazione tecnica, questa spiegazione non è utile a meno che non si accorga che 'E_STRICT',' E_WARNING', 'E_NOTICE' et. al. sono interi e vengono contemporaneamente combinati con l'operatore bitmap '&'. – IQAndreas