[ create a new paste ] login | about

Link: http://codepad.org/WqqpKwn3    [ raw code | output | fork ]

PHP, pasted on Jan 25:
<?

$data = "John 147 2014-01-01
Bob 79 2014-01-01
Joe 156 2014-01-01
Sue 116 2014-01-01
John 117 2014-01-02
Bob 186 2014-01-02
Sue 74 2014-01-02
Bob 233 2014-01-03
John 159 2014-01-03
Sue 162 2014-01-03
Bob 162 2014-01-04
Sue 38 2014-01-05";

$data = explode("\n", $data);

$cols = array();
$pivot = array();

while ($line = array_shift($data)) {
    list($name, $points, $date) = explode(' ', trim($line));

    if (!$pivot[$name]) $pivot[$name] = array();

    array_push($cols, $date);

    array_push($pivot[$name], array('date' => $date, 'points' => $points));
}

$cols = array_unique($cols);

print_r($pivot);

echo implode('|', $cols);

echo PHP_EOL;

foreach ($pivot as $name => $row) {
    while ($entry = array_shift($row)) {
        echo str_pad($name, 7, ' ') . str_pad($entry['points'], 3, ' ', STR_PAD_LEFT) . '|';
    }

    echo PHP_EOL;
}

?>


Output:
Array
(
    [John] => Array
        (
            [0] => Array
                (
                    [date] => 2014-01-01
                    [points] => 147
                )

            [1] => Array
                (
                    [date] => 2014-01-02
                    [points] => 117
                )

            [2] => Array
                (
                    [date] => 2014-01-03
                    [points] => 159
                )

        )

    [Bob] => Array
        (
            [0] => Array
                (
                    [date] => 2014-01-01
                    [points] => 79
                )

            [1] => Array
                (
                    [date] => 2014-01-02
                    [points] => 186
                )

            [2] => Array
                (
                    [date] => 2014-01-03
                    [points] => 233
                )

            [3] => Array
                (
                    [date] => 2014-01-04
                    [points] => 162
                )

        )

    [Joe] => Array
        (
            [0] => Array
                (
                    [date] => 2014-01-01
                    [points] => 156
                )

        )

    [Sue] => Array
        (
            [0] => Array
                (
                    [date] => 2014-01-01
                    [points] => 116
                )

            [1] => Array
                (
                    [date] => 2014-01-02
                    [points] => 74
                )

            [2] => Array
                (
                    [date] => 2014-01-03
                    [points] => 162
                )

            [3] => Array
                (
                    [date] => 2014-01-05
                    [points] => 38
                )

        )

)
2014-01-01|2014-01-02|2014-01-03|2014-01-04|2014-01-05
John   147|John   117|John   159|
Bob     79|Bob    186|Bob    233|Bob    162|
Joe    156|
Sue    116|Sue     74|Sue    162|Sue     38|


Create a new paste based on this one


Comments: