Uygulanmasında, sonra yine makine düzeyinde olur değilse döngüler kaçınarak, büyük olasılıkla mümkün değildir.
Eğer kötü kodu olmadan "saf" kalmaya denemek istiyorsanız Ancak, en azından yapabilirsiniz:
$tableformat = '<table><thead>%s</thead><tbody>%s</tbody></table>';
$rowformat = '<tr>%s</tr>';
$cellformat = '<td>%s</td>';
$hdata = '';
foreach( $data[0] as $cellname => $cellvalue )
{
$hdata .= sprintf( $cellformat, $cellname );
}
$hdata = sprintf( $rowformat, $hdata );
$rdata = "";
foreach( $data as $rownum => $rowvalue )
{
$row = "";
foreach( $rowvalue as $colname => $colvalue )
{
$row .= sprintf( $cellformat, $colvalue );
}
$rdata .= sprintf($rowformat,$row);
}
return sprintf( $tableformat, $hdata, $rdata );
En azından bu şekilde biraz sürdürülebilir olabilir. ve eksik dizeleri hakkında çok fazla endişe yok.
Ayrıca ile bu kod bazı subsitutue olabilir
$hdata = "<tr><td>" . implode( "</td><td>", array_keys( $data[0] )) . "</td></tr>";
$rdata .= "<tr><td>" . implode( "</td><td>", $rowvalue ) . "</td></tr>";
Oldukça özlü olurken, muhtemelen sonunda sıcak su biraz sizi alacak ve recoding gerekir hangi. (Ve içten çökmek bir döngü çalışır, bu yüzden onun bir kaybet-kaybet).
Ekstra fonksiyon çağrıları (ve hala çalışıyor döngüler) ve üzerinde kafa sakıncası yoksa bu çok negatif olmadan daha kısa kod için yapabilir:
$tableformat = '<table><thead>%s</thead><tbody>%s</tbody></table>';
$rowformat = '<tr>%s</tr>';
$cellformat = '<td>%s</td>';
function tr( $cells )
{
$o = "";
foreach( $cells as $i => $v )
{
$o .= sprintf( $cellformat, $v );
}
return sprintf( $rowformat, $o );
}
return sprintf( $tableformat,
tr( array_keys($data[0])),
implode("", array_map( 'tr', $data )) );
Ama dikkat okumak zor thats, ve bir gün kadar Eğer lisp ile uyanmak edeceğiz tutun.