<?php
//Funcion que Dibuja una tabla.
//Coded by: Jonathan Ramos, jonathanramos@gmail.com
//--------------------------------------------------------------------------------------------------
// Sintaxis function drawTable ($title,$columnHeader,$rowHeader,$tableArray,$keyFlag,$emptyCellKey)
// -------------------------------------------------------------------------------------------------
// donde $title,$columnHeader,$rowHeader y $emptyCellKey deben ser asignados con valor 0 si no se requieren.
// $title : Es una Cadena con el titulo de la tabla.
// $columnHeader: Arreglo con los Headers de las columnas de la tabla a dibujar.
// $rowHeader: Arreglo con los Headers de los renglones de la tabla a dibujar.
// $tableArray: Arreglo de dos dimensiones con los datos a imprimir en la tabla. Este es obligatorio.
// $keyFlag: Valor booleano para indicar que se incluye un valor clave de escape para imprimer celda vacia.
// $emptyCellKey: Valor clave de escape para imprimir celda vacia, si no se requiere se debe asignar false.
function drawTable($title,$columnHeader,$rowHeader,$tableArray,$keyFlag,$emptyCellKey){
	$arrayRowCount = count($tableArray); // Numero de elementos encabezado columna
	$arrayColumnCount = count($tableArray[0]); // Numero de elementos encabezado renglon
	$tableColumnCount = $arrayColumnCount;
	//Creamos la tabla html
	echo '<table style="width:50%">';
	
	//Imprime titulo con cellpading $tableColumnCount
	if ($rowHeader != 0){
		$tableColumnCount++; //Si existen $rowHeader, incrementamos el numero de columnas de la tabla a dibujarse
	}
	echo '<tr style="background-color:CornflowerBlue; color:white;">'; // Estilo del titulo
	echo '<th colspan = "'.$tableColumnCount.'"; >'.$title.'</th></tr>';
	//Si son requeridos, creamos Headers de Columna
	if ($columnHeader != 0){
		//Iniciamos etiqueta html table row
		echo '<tr style="background-color:Azure;">'; // Colores de estilo
		//Si hay headers de renglon, agregamos una celda en blanco
		if ($rowHeader != 0){
			echo "<th></th>";
		}
		
		//Pintado de headers de Columna
		for ($col=0; $col < $arrayColumnCount; $col++){
				echo "<th>".$columnHeader[$col]."</th>";
		}
		echo "</tr>"; //Finalizamos etiqueta html table row
	} 
		
	//Pintado de renglones del array, y si son requeridos, creamos Headers de Renglon.
	for ($row=0; $row < $arrayRowCount; $row++){
		echo "<tr>"; //Inicializamos etiqueta html table row sin atributos
		
		//Si son requeridos, creamos Headers de Renglon
		if ($rowHeader != 0){
			// Colores de estilo
			echo '<th style="background-color:Lavender;">'.$rowHeader[$row].'</th>'; // Headers de renglon
		}
		//Pintado de celdas del arreglo $tableArray
		for ($col=0; $col < $arrayColumnCount; $col++){
			// Verificamos si la bandera de escape es TRUE
			if ( $keyFlag ){
				// Verificamos si no es un valor de celda vacia
				if ($tableArray[$row][$col] != $emptyCellKey){
					echo "<td>".$tableArray[$row][$col]."</td>";
				} else {
					echo "<td></td>"; // Celda Vacia por valor de escape
				}
			} else {
				echo "<td>".$tableArray[$row][$col]."</td>";
			}
		} 
		echo "</tr>"; //Finalizamos etiqueta html table row
	}
	echo "</table>";
	
} // end drawTable()
?>Aqui un ejemplo de como funciona: 
http://utilities.byethost3.com/cursoPHP/calendario_v2.phpSi alguien sabe como hacer los argumentos opcionales (que se puedan escribir o no) en lugar de pedir un 0, que me lo diga por favor  
