Quizá te pueda servir esto:
Formulario:
Código PHP:
Ver original<?php
$total_filas = 5; // numero de filas
$total_columnas = 4; // numero de columnas
?>
<html>
<head>
<title></title>
<script type="text/javascript">
function doAdd(fila,columna,obj){
var promedio_fila = document.getElementById('promedio_fila_' + fila);
var promedio_columna = document.getElementById('promedio_columna_' + columna);
var total_filas = 0;
var total_columnas = 0;
for(i=1;i<=<?=$total_filas?>;i++){
valor = parseInt(document.getElementById('campo_'+i+'_' + columna).value);
total_filas += valor;
}
for(i=1;i<=<?=$total_columnas?>;i++){
valor = parseInt(document.getElementById('campo_'+fila+'_'+i).value);
total_columnas += valor;
}
promedio_fila.value = Math.round(total_columnas/<?=$total_columnas?>);
promedio_columna.value = Math.round(total_filas/<?=$total_filas?>);
}
</script>
</head>
<body>
<form id="formulario" action="guardar.php" method="POST">
<table>
<?php
for($fila=1;$fila<=$total_filas;$fila++){
?>
<tr>
<?php
for($columna=1;$columna<=$total_columnas;$columna++){
?>
<td><input type="text" onkeyup="doAdd(<?=$fila?>,<?=$columna?>,this)" onkeydown="doAdd(<?=$fila?>,<?=$columna?>,this)" name="campo[<?=$fila?>][<?=$columna?>]" id="campo_<?=$fila?>_<?=$columna?>" value="0" /></td>
<?php
}
?>
<td><input type="text" name="promedio_fila[<?=$fila?>]" id="promedio_fila_<?=$fila?>" readonly /></td>
</tr>
<?php
}
?>
<tr>
<?php
for($columna=1;$columna<=$total_columnas;$columna++){
?>
<td><input type="text" name="promedio_columna[<?=$columna?>]" id="promedio_columna_<?=$columna?>" readonly /></td>
<?php
}
?>
</tr>
<tr>
<td colspan="<?=$total_columnas?>">
<input type="submit" value="Guardar" />
</td>
</tr>
</table>
</form>
</body>
</html>
Archivo guardar.php
Código PHP:
Ver original<?php
// obtenemos los valores
foreach($campo As $fila=>$campo_columna){
foreach($campo_columna As $columna=>$valor_campo){
echo $valor_campo.' ';
}
echo '<br />';
}
// obtenemos los promedios horizontales
foreach($promedio_fila As $fila=>$valor){
echo 'Promedio Fila '.$fila.' => '.$valor.'<br />';
}
// obtenemos los promedios verticales
foreach($promedio_columna As $columna=>$valor){
echo 'Promedio Columna '.$columna.' => '.$valor.'<br />';
}
?>