Bueno .. ahora tuve oportunidad de probar el código y hacer pruebas .. llegué a esta conclusión:
Código PHP:
<?
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo "Total: ".count($_POST['filenames'])."<br><br>";
for ($x=0; $x<count($_POST['filenames']); $x++){
if (!empty($_POST['seleccion'][$x])){
echo $x." ==> ".$_POST['seleccion'][$x]." --> ".$_POST['filenames'][$x]."<br>";
}
}
?>
Tomo el total de elementos posibles o combinaciones que podrían resultar (no como antes que me basaba en los checkbox seleccionados). No "resto-1" sino que aplico sólo < (menor que) en el for() ...
Por otro lado .. al recorrer el array de los campos "hidden" y sabiendo que el mismo indice en el array de los "checkbox" si no está seleccionado no existe .. uso un "if()" bajo un empty() para detectar esta situación; si se produce .. no gestiono su valor (sería una "línea o checkbox que no seleccioné").
Lo he probado y aparentemente funciona como se espera.
Un saludo,