Hola,
La pregunta clave creo que no está en cual es la solución a ese algoritmo, sino el objetivo, el resultado esperado, las combinaciones posibles son 128, 128 consultas diferentes; perdón pero, o está mal tu base de datos o la técnica de programación que estas usando es muy mala (por no decir otra cosa).
Pero, si realmente necesitas eso, normalmente se usan operaciones a nivel de bits para dividir las posibles combinaciones:
Código PHP:
$arr = Array('A', '', 'C', '', '', '', 'F');
$opcion = 0x00;
$opcion |= empty($arr[0]) ? 0 : 0x01;
$opcion |= empty($arr[1]) ? 0 : 0x02;
$opcion |= empty($arr[2]) ? 0 : 0x04;
$opcion |= empty($arr[3]) ? 0 : 0x08;
$opcion |= empty($arr[4]) ? 0 : 0x10;
$opcion |= empty($arr[5]) ? 0 : 0x20;
$opcion |= empty($arr[6]) ? 0 : 0x40;
echo $opcion;
Eso te genera un número diferente para cada combinación de campos vacíos, pero no en el orden que estas usando, sino lo genera a nivel de combinaciones binarias, por ejemplo:
Código:
ARR0 ARR1 ARR2 ARR3 ARR4 ARR5 ARR6
X = 1
X = 2
X X = 3
X = 4
X X = 5
X X = 6
etc... hasta 127
Saludos,