WEBDESIGN

PHP Array ausgeben als Tabelle

Arrays kann man mit PHP auf verschiedene Arten ausgeben, zum einen bietet sich hier die Funktion print_r() oder die noch etwas ausführlichere var_dump(). Beide sind in Kombination mit dem HTML pre – Tag, relative übersichtliche und schnelle Methoden Arrays auszugeben.

Es gibt aber noch weitere Methoden, zum einen könnte man den Array iterativ durchlaufen und so die einzelnen Elemente und Schlüssel jeweils ausgeben. Wenn man jedoch nicht vorher weiß, wie tief der Array ist, gibt es auch noch die Möglichkeit, diesen rekursiv zu durchlaufen. (Würde auch iterativ gehen, aber weit aufwendiger).

Wenn einem die Informationen oder die Formatierung von print_r() oder var_dump() nicht ausreicht, kann man eine eigene Funktion auf Basis der oben beschriebenen Methoden basteln.

Um Arrays als Tabelle übersichtlich darzustellen (natürlich nur bis zu einer gewissen Größe übersichtlich, aber das ist ja bei den anderen Funktionen nicht anders), habe ich die Funktion array_table() geschrieben.

Zuerst einmal der Code inklusive Beispiel:

PHP Array ausgeben – als Tabelle

$array['Apfel'] = 12;
$array['Birne'] = 13;
$array['Traube'] = 14;
$array['Melone'] = 'Ausverkauft!';
$array['Ananas'] = 16;
$array['Erdbeere'] = 'Keine Angabe';
$array['Obst'] = $array;
$array['Obst']['Obst'] = $array;

function array_table($var)
    {
        if(is_array($var)) {		    
            echo '<table border=0 style="border:2px solid grey;font:12px Verdana,Tahoma,Arial,Calibri,Geneva,sans-serif;">';
            foreach($var as $key => $value) {
                echo '<tr style="border:1px solid #d6d6d6">',
					 '<td style="border:1px dashed black;padding:5px;">',
					 '<span style="color:#469DFA; font-weight:bold">'.$key.'</span>',
					 "</td>",
                     "<td>",
                     array_table($value),
                     "</td>",	
                     "</tr>";				
            }
			echo '</table>';
        } else {
		    $type = gettype($var); 
            echo '<div style="padding:10px; border:1px solid #d6d6d6;"><span style="color:red;font-weight:bold;">'. $var . '</span>
				 vom Typ <span style="color:#084B8A">'. $type.'</span> </div>';
        }
    }
	
array_table($array);	

Dieser Funktion kann ein beliebiger Array, d.h. insbesondere auch ein mehrdimensionaler Array übergeben werden. Dann wird auf Basis dieses Arrays eine Tabelle erzeugt und ausgegeben.

Screenshot


Legende der Tabelle:

Grauer Rahmen entspricht einem ganzen Array.

Schwarz gestrichelter Rahmen entspricht einem Array – Key (Schlüssel).

Hellgrauer Rahmen entspricht dem Array Wert.

Wie man sieht, werden Arrays bis zu einer bestimmten Größe sehr übersichtlich mit Schlüssel, Wert und Typ ausgeben. Wem also print_r() oder var_dump() zu trist ist, der kann mit dieser Funktion array_table() Arrays formatiert in einer Tabelle ausgeben. Wenn man diese Funktion, in einer Datei functions.php abspeichert und diese global einbindet, dann kann man genauso drauf zugreifen wie auf var_dump() oder print_r().



Kommentare ( 8 Kommentare )

  • Paul Schmidinger Antworten ↓

    Sehr hübsch! Bei riesigen Arrays könnte man noch ein JavaScript-basiertes "Klappen" ergänzen, sodass man geziehlt die Teile untersuchen kann, die einen interessieren.

    LG, Paul

  • Dieter Antworten ↓

    Hallo,
    im Code der Funktion in Zeile 28 handelt es sich bestimmt um ein schließendes DIV, oder?

    Finde ich gut und kannte ich noch nicht, danke.

    MfG
    Dieter

    • m0d Antworten ↓

      Hi,

      ja stimmt, danke ist ausgebessert.

  • Julian Antworten ↓

    Kann man die Tabelle eigentlich auch horizontal gestalten, sprich, dass das Array horizontal ausgegeben wird?

    • m0d Antworten ↓

      Möglich ist das mit Sicherheit, muss man halt schauen, wie die Zeilen bzw. Spalten angeordnet werden müssen.

      • Julian Antworten ↓

        Ich habs hinbekommen - danke trotzdem. Und auch für die schnelle Antwort.

  • Igor Westphal Antworten ↓

    Mir hat diese Tabelle heute den Tag gerettet! Hab dann sehr zufrieden mein (sortiertes), mehrdimensionales Array darin abbilden lassen und kann jetzt getrost Feierabend machen. Tausend Dank :-)
    Lg, Igor

Schreib einen Kommentar