Hice esta pequeña versión de prueba y me funciona correctamente:
Código PHP:
Ver original<?php
'id' => 1,
'marca' => 'vw',
'nombre' => 'jetta',
'color' => 'rojo',
'puertas' => '4',
'version' => 'GL',
'anio' => '2001'
),
'id' => 2,
'marca' => 'vw',
'nombre' => 'jetta',
'color' => 'azul',
'puertas' => '4',
'version' => 'GL',
'anio' => '2006'
),
'id' => 3,
'marca' => 'vw',
'nombre' => 'golf',
'color' => 'negro',
'puertas' => '2',
'version' => 'GL',
'anio' => '2002'
),
'id' => 4,
'marca' => 'vw',
'nombre' => 'beetle',
'color' => 'rojo',
'puertas' => '4',
'version' => 'GL',
'anio' => '2003'
)
);
'id' => '#',
'marca' => 'Marca',
'nombre' => 'Nombre',
'color' => 'Color',
'puertas' => 'Puertas',
'version' => 'Version',
'anio' => 'Año'
);
'id' => '<a href="test.php?id=%id%">%id%</a>',
'color' => '<span class="color_%color%">%color%</a>'
);
echo Construye_Tabla($aDatos, $aCampos, $aRenders, "test", "Y");
function Construye_Tabla
(array $datos,array $campos,array $renders,$estilo_tabla,$titulos) {
if ($estilo_tabla!="")
{
$tabla = "<table align='center' style='".$estilo_tabla."'>";
} else {
$tabla = "<table align='center' >";
}
if ($titulos=="Y")
{
$tabla .= "<tr>";
foreach ($campos as $campo => $titulo) {
$tabla .= "<th>$titulo</th>";
}
}
$tabla .= "</tr>";
foreach($datos as $index => $row)
{
$tabla .= "<tr>";
foreach ($campos as $campo => $titulo) {
if (isset($row[$campo])) { if (isset($renders[$campo])) { $celda = str_replace('%'.$campo.'%', $row[$campo], $renders[$campo]); } else {
$celda = $row[$campo];
}
$tabla .= "<td>" . $celda . "</td>";
}
}
$tabla .= "</tr>";
}
$tabla .= "</table><br />";
return $tabla;
}
Puedes compararla y ver las diferencias.
Saludos.