Search code examples
phpmultidimensional-arrayhtml-tabletranspose

Display PHP multidimensional array in html table with each subarray in a column


I'm sure there's a fairly easy way to do this. I have an the following data in an array:

Array
(
    [ActivityDiaryEntry] => Array
        (
            [date] => 2011-03-03
            [type] => Walking
            [minutes] => 60
        )

)
Array
(
    [ActivityDiaryEntry] => Array
        (
            [date] => 2011-03-02
            [type] => Walking
            [minutes] => 22
        )

)
Array
(
    [ActivityDiaryEntry] => Array
        (
            [date] => 2011-03-01
            [type] => Biking
            [minutes] => 45
        )

)

I'm not too skilled at PHP, but I know how to display this data by row to display as <tr><td>[date]</td><td>[type]</td><td>[minutes]</td></tr>. But I'd like to have the data display in columns like this:

2011-03-01 | 2011-03-02 | 2011-03-03
------------------------------------
Biking     | Walking    | Walking
------------------------------------
45         | 22         | 60

Solution

  • A little ugly but works :')

    $a[0] = array('ActivityDiaryEntry' => array("date" => "2011-03-03", "type"=> "Walking", "minutes" => 60));
    $a[1] = array('ActivityDiaryEntry' => array("date" => "2011-03-03", "type"=> "Walking", "minutes" => 22));
    $a[2] = array('ActivityDiaryEntry' => array("date" => "2011-03-03", "type"=> "Biking", "minutes" => 42));
    
    $keys = array_keys($a[0]["ActivityDiaryEntry"]);
    
    echo '<table>';
    for($c = 0; $c < count($a); $c++) {
        echo '<tr>';
            for($i = 0; $i < count($a[$c]['ActivityDiaryEntry']); $i++) {
                echo '<td>' . $a[$i]['ActivityDiaryEntry'][$keys[$c]] . '</td>';
            }
        echo '</tr>';       
    }
    echo '</table>';
    

    http://codepad.org/5Tuk8x3Q