Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function check_mis_articulos(chk_fichero){
var array_pieces = new Array();
for(var i=0;i<document.form1.elements.length;i++){//recorro los elementos del formulario
array_pieces = document.form1.elements[i].value.split('_');//combierto el valor a un array
//array_pieces[0]=articulo
//array_pieces[1]=id del articulo
//array_pieces[2]=id del fichero
if(array_pieces.length>1){//filtro solo los chks de de articulos
if(array_pieces[array_pieces.length-1]==chk_fichero.value){//si ultima pos del array_pieces = al id del fichero
document.form1.elements[i].checked=chk_fichero.checked;//pongo el estado del fichero a los articulos
}
}
}
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<input name="seleccion_ficheros[]" type="checkbox" id="fichero_1" value="1" onclick="check_mis_articulos(this)" />
File
<br />
<input type="checkbox" name="seleccion_articulos" value="articulo_1_1" />
articulo1.1
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_2_1" />
articulo1.1
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_3_1" />
articulo1.1
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_4_1" />
articulo1.1
<br />
<br />
<input name="seleccion_ficheros[]" type="checkbox" id="fichero_2" value="2" onclick="check_mis_articulos(this)" />
File
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_1_2" />
articulo1.1
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_2_2" />
articulo1.1
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_3_2" />
articulo1.1
<br />
<input type="checkbox" name="seleccion_articulos[]" value="articulo_4_2" />
articulo1.1
</form>
</body>
</html>
El nombre de los checks de los ficheros y los de los articulos deben ser diferentes porque a la hora de hacer $_POST no vas a saber cuales son articulos y cuales ficheros, ahora lo que te toca es parsear el valor de los articulos el el $_POST...
Saludos, espero que te sirva...