cita "La idea no es buena, la verdad. Pasarías mejor pocos booleano. Si desea utilizar bit a bit a continuación
function someFunc($options)
{
if ($options & 1 != 0)
//then option 1 enabled
if ($options & (1 << 1) != 0)
//then option 2 enabled
if ($options & (1 << 2) != 0)
//then option 3 enabled
}
"
Lo que ha hecho estaría bien si fueras la comprobación de un solo valor, aunque no óptima, lo que la comprobación de que un bit está activado, pero digamos que queríamos ser capaces de adaptarse a cualquier, o exacta que podríamos tener los siguientes métodos
function matchExact($in, $match) { // meets your criterion, as would a switch, case, but ultimately not suited for use with flags
return $in === $match;
}
function matchAny($in, $match) { // meets original criterion with more lexical name however it returns true if any of the flags are true
return $in |= $match;
}
si luego quería ampliar esto a través de acciones específicas sólo se suceden si el bit x, y, z se selecciona, se puede utilizar la siguiente
function matchHas($in, $match) { // more bitwise than === as allows you to conditionally branch upon specific bits being set
return $in &= $match;
}
También creo que si usted está haciendo lo que se hizo en el arriba, las banderas pueden no ser la mejor idea, los valores exactos pueden ser mejores, lo que tiene el beneficio de permitir acciones más discretas. (0-255) para 8 bits en 8 distintivos distintivos
Toda la razón que las banderas funcionan tan bien es porque en la base 2 "8" no contiene "4", y "2" no contiene "1".
________________________
|8|4|2|1|Base 10 Value |
------------------------
|1|1|1|1|15 |
|1|1|1|0|14 |
|1|1|0|1|13 |
|1|1|0|0|12 |
|1|0|1|1|11 |
|1|0|1|0|10 |
|1|0|0|1|9 |
|1|0|0|0|8 |
|0|1|1|1|7 |
|0|1|1|0|6 |
|0|1|0|1|5 |
|0|1|0|0|4 |
|0|0|1|1|3 |
|0|0|1|0|2 |
|0|0|0|1|1 |
|0|0|0|0|0 |
------------------------
No creo que esta sea una respuesta completa, así que lo colocaré como un comentario, pero eche un vistazo a los permisos para archivos y directorios en UNIX como ejemplo. – Clutch
* (relacionado) * http://stackoverflow.com/questions/2131758/bitwise-operations-in-php/2131828#2131828 – Gordon