Assim como outros comentaristas mencionaram, esses são operadores bit a bit. Os operadores bit a bit do PHP estão documentados aqui:http://php.net/manual/ pt/language.operators.bitwise.php
Exemplos
&
é um E bit a bit
operador. 10 e 10 =10 (toda a representação decimal). Como? 10 é 1010 binário.
1010
and 1010
--------
1010
Observe que o resultado é 1 somente quando os números superior e inferior na mesma coluna são 1.
A maneira do PHP de escrever isso:
<?php
echo 10 & 10;
?>
Result: 10
Qual a utilidade prática disso? Vamos dar um exemplo:Existem 4 conjuntos de portas duplas. Ambas as portas têm que abrir ao mesmo tempo para uma pessoa passar. A porta aberta recebe o número 1. A porta fechada recebe o número 2.
1010
significa que a primeira porta está aberta, a segunda está fechada, a terceira está aberta, a quarta está fechada. Quando todas as portas estiverem fechadas, elas ficarão assim:0000 <-- first set of doors
0000 <-- second set of doors
Para permitir que alguém passe pela porta mais à esquerda, as portas devem ser assim:
0001
0001
Tudo bem, mas há uma maneira mais rápida de anotar isso. Operador bit a bit &. Fazemos &entre as duas portas e obtemos um resultado de 1. Portanto, se os dados forem armazenados como 1, saberemos que as portas mais à esquerda estavam abertas.
Para abrir a porta mais à esquerda, a combinação teria que ser:
1000
1000
O resultado do operador bit a bit é decimal 8. Use a como a calculadora um no miniwebtool para executar um pouco de matemática.
Por outro lado, como as portas abrem e fecham o dia todo, pode-se registrar quando ambas as portas de qualquer um dos 4 conjuntos de portas estavam abertas. É apenas uma resposta prolixa para talvez uma pergunta simples.