Sehr häufig wird gefordert ein assoziatives Array als HTML Tabelle auszugeben. Ich nutze hier sehr oft die implode() Funktion, um dabei mit möglichst wenig Quellcode zu dem Gewünschten Ergebnis zu kommen. Da ich meine Lösung wirklich sehr schön und genial einfach finde, wollte ich euch kurz die Funktion präsentieren. Als auszugebendes Array nehmen wir das MySQL-Debugging Array aus meinem vorherigen Artikel MySQL unter PHP debuggen mit einer eigenen MySQL Klasse.
function array_to_table($a){ $t='<table>'; $t.='<tr><th>'.implode('</th><th>', array_keys($a[0])).'</th></tr>'; foreach($a as $row){ $t.= '<tr><td>'.implode('</td><td>', $row).'</td></tr>'; } return $t.='</table>'; } // Ausgabe der Tabelle echo array_to_table($mysqli->queries);
In Zeile 3 werden die Schlüssel des assoziativen Array für die Überschriften der Spalten genutzt. Wir öffnen hier eine Zeile und eine Spalte und fügen dann mit Hilfe der implode() Funktion alle Schlüssel in diese Zeile ein. Die „Glue“ für die implode() Funktion ist hierbei ein schließendes Tag für die Spalte und ein weiteres öffnendes. Am Ende der Zeile schließen wir noch die letzte Spalte und die Zeile. Die gleiche elegante Anwendung der implode() Funktion verwenden wir auch bei den einzelnen Spalten mit den Werten. Hier in einer foreach Schleife.
Mit dieser Funktion kann jedes assoziative Array sehr elegant ausgegeben werden. Dabei lässt sich die Funktion trefflich erweitern. So könnte z.B. in einem Parameter ein Array mit Schlüsselnamen übergeben werden, wenn die Schlüssel des Assoziativen Arrays nicht passend für die Tabelle sind. Oder es könnte jeder Zeile eine alternierende „gerade“ und „ungerade“ Klasse mitgegeben werden. Oder aber man vergibt Klassen um eine der vielen JavaScript Sortierungen auf die Tabelle anwenden zu können.
Wir ihr also sehen könnt ihr eure Fantasie bei der Erweiterbarkeit freien Lauf lassen. Ich vergebe meistens die Klassen für Sortierung einer Tabelle mit der Tablekit Sortierung.
Ich hoffe, dass euch die Funktion bei eurer täglichen Arbeit helfen kann. Ich liebe die implode() Funktion, da man mit ihr sehr elegant PHP Arrays in Strings umwandeln kann. Ich verwende sie auch häufig beim Erstellen von SQL Statements in Verbindung mit dem IN() Operator.