Trataría sus cuatro booleanos como cuatro bits, así como un entero entre 0 y 15. Crearía una matriz con 16 elementos y almacenaría un puntero de función en cada elemento de la matriz. Cada vez que usted necesita para hacer esto, yo evalúo los booleanos en un patrón de bits, convierte a int, y llamo el método almacenado en ese índice de la matriz.
Sé que estás preguntando sobre PHP, que me temo que no sé. En C#, podría hacer algo como esto:
static class Multiplexer
{
public static string Multiplex(bool a, bool b, bool c, bool d)
{
var i = 0;
i |= (a ? 1 : 0) << 3;
i |= (b ? 1 : 0) << 2;
i |= (c ? 1 : 0) << 1;
i |= (d ? 1 : 0);
return _functions[i]();
}
private static Func<string>[] _functions = new Func<string>[] {
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return Assembly.GetExecutingAssembly().FullName; },
() => { return ""; },
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return "pie";},
() => { return "index 1"; },
() => { return DateTime.Now.ToString(); },
() => { return Assembly.GetExecutingAssembly().FullName; },
() => { return ""; }};
}
Use menos sentencias if. En serio, esta pregunta es tan vaga –
bien no utilice el interruptor, por favor. –
No creo que 'and' funcione aquí (dentro del interruptor). Use '.'? http: // codepad.org/X4fIQsSz – Dogbert