Ultima revisión 22/12/2012
Convertir de Array a HTML en PHP (array2HTML)
array2html es una función que permite convertir un array asociativo en una Tabla HTML de forma sencilla en 2 pasos. Como veréis, sólo hay que enviarle un array bien formado.
Para crear la estructura de tabla primero se añadirán las partes fijas como son table, thead y tbody. Seguidamente se recorrerá el array haciendo que cada elemento del array sea una fila.
/* **************************************************************************************************************************************************************************************************
FUNCIÓN PARA CONVERTIR UN ARRAY ASOCIATIVO EN FORMATO DE TABLA HTML.
PARÁMETROS:
-----------
$data --> ES EL ARRAY FUENTE
$level --> NO CAMBIAR. INDICA EL NODO DÓNDE ESTA. SE USA PARA EL PROCESO RECURSIVO.
$sub --> NO CAMBIAR. INDICA EL PRIMER NODO DE LA FILA.
***************************************************************************************************************************************************************************************************/
/**
* Function for convert an array associative to HTML table object.
* @param string $data The source array.
* @param int level Indicates recursive level.
* @param string $sub Indicates ther first child of row.
* @return string Returns the HTML table body.
*/
function array2html_tBody($array, $level, $sub){
$result = "";
if (is_array($array)){
foreach($array as $key => $value) {
$offset = "";
if (is_array($value)){
$offset = "<tr>".str_repeat("<td></td>", $level);
$result .= $offset . "<th>" . $key . "</th>";
$result .= array2html_tBody($value, $level+1, true);
} else {
if (!$sub){ // Si es el primer nodo
$offset = "<tr>".str_repeat("<td></td>", $level);
}
$sub = false;
$result .= $offset . "<th>" . $key . "</th><td>" . $value . "</td>"."</tr>\n";
}
}
} else {
return $result;
}
return $result;
}
/* **************************************************************************************************************************************************************************************************
FUNCIÓN PARA CONVERTIR UN ARRAY ASOCIATIVO EN FORMATO CSV HTML.
PARÁMETROS:
-----------
$data --> ES EL ARRAY FUENTE
$level --> NO CAMBIAR. INDICA EL NODO DÓNDE ESTA. SE USA PARA EL PROCESO RECURSIVO.
***************************************************************************************************************************************************************************************************/
/**
* Function for convert an array associative at SOAP messages. Only used with Web Service connection.
* @param string $data The source array.
* @param int Indicates recursive level.
* @return string Returns a string in HTML Format table.
*/
function array2html($arr, $level=0){
$result = '<table cellspacing="2" cellpadding="2" border="1" >'."\n";
$result .= '<thead>'."\n";
$result .= '<tr><th colspan="50">Request Response</th></tr>'."\n";
$result .= '</thead>'."\n";
$result .= '<tbody>'."\n";
$result .= array2html_tBody($arr, 0, 0);
$result .= '</tbody>'."\n";
$result .= "</table>\n";
return $result;
}
$arr = array("user" => "root", "user_id" => "1", "password" => "contraseña", "mensaje" => array("id" => "1", "descripcion" => "Descripción del texto", "prioridad" => "Alta"));
$html = array2html($arr);
header ("Content-Type:text/html");
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n";
echo '<html xmlns="http://www.w3.org/1999/xhtml">'."\n";
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
echo '<meta name="description" content="metaDescription" />';
echo '<head>'."\n";
echo "\n";
echo '</head>'."\n";
echo '<body>'."\n";
echo $html;
echo '</body>'."\n";
echo '</html>'."\n";
Espero que os sea útil alguna vez.