CSV in zweidimensionales Array

Alles, was PHP betrifft, kann hier besprochen werden.

CSV in zweidimensionales Array

Postby TheMentor » 01. September 2010 13:15

Hallo Leute,

ich komm leider nicht drauf, wie ich folgende Situation am Besten lösen soll. Ich eine CSV File welches plakativ folgenden Aufbau hat

Code: Select all
Spalte 1;Spalte 2;Spalte 3;Spalte 4;Spalte 5
1;2;3;4;5
11;22;33;44;55
111;222;333;444;555
1111;2222;3333;4444;5555


in der ersten Zeile befinden sich die Spaltennamen und dann befindet sich in jeder Spalte ein Datensatz. Wie bekomme ich nun diese Daten am saubersten in ein Array, damit ich dann, wenn die Daten im Array sind, damit weiter arbeiten kann.

Danke für eure Mithilfe..
Lg
TM
TheMentor
 
Posts: 4
Joined: 01. September 2010 13:11

Re: CSV in zweidimensionales Array

Postby TheMentor » 01. September 2010 14:59

Hallo Leute,

ich habe hier mal einen Ansatz, der ansich funktioniert.

Code: Select all
<?php

echo "<table>\n";

$row = 0;
$handle = fopen("Mappe1.csv", "r");

while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    if ($row == 0) {
        Das ist die erste Zeile des CSV Files
        $num = count($data);
        echo "<thead>\n<tr>";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo "<th>" . $data[$c] . "</th>";
        }
        echo "</tr>\n</thead>\n\n<tbody>";
    } else {
        // Hier wird der Rest des CSV Files abgearbeitet.
        $num = count($data);
        echo "<tr>";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo "<td>" . $data[$c] . "</td>";
        }
        echo "</tr>\n";
    }
}
fclose($handle);

echo "</tbody>\n</table>";

?>


Ist hier noch optimierungspotential drinnen, oder kann man das so lassen?

Lg
TM
TheMentor
 
Posts: 4
Joined: 01. September 2010 13:11

Re: CSV in zweidimensionales Array

Postby Nobbie » 01. September 2010 15:06

TheMentor wrote:Ist hier noch optimierungspotential drinnen, oder kann man das so lassen?


Das kannst nur Du selbst beantworten - wenn Dir so reicht, ist doch gut. Hat allerdings mit einem zweidimensionalen Array nichts zu tun. Du gibst ja jetzt nur eine Tabelle mit den Werten aus.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: CSV in zweidimensionales Array

Postby TheMentor » 01. September 2010 15:30

Sorry, habe den falschen Code erwischt...

Code: Select all
<?php

print_r(importcsv('Mappe1.csv'));

function importcsv($file,$head=false,$delim=";",$len=1000) {
    $return = false;
    $handle = fopen($file, "r");
    if ($head) {
        $header = fgetcsv($handle, $len, $delim);
    }
    while (($data = fgetcsv($handle, $len, $delim)) !== FALSE) {
        if ($head AND isset($header)) {
            foreach ($header as $key=>$heading) {
                $row[$heading]=(isset($data[$key])) ? $data[$key] : '';
            }
            $return[]=$row;
        } else {
            $return[]=$data;
        }
    }
    fclose($handle);
    return $return;
}
?>
TheMentor
 
Posts: 4
Joined: 01. September 2010 13:11

Re: CSV in zweidimensionales Array

Postby TheMentor » 02. September 2010 06:43

So - der Code tut mal das was er soll... Eine Frage habe ich aber noch:

Weiß jemand, wie man nun dieses Array mit SMARTY also Tabelle ausgeben kann?

Danke für eure Hilfe
Lg
TM
TheMentor
 
Posts: 4
Joined: 01. September 2010 13:11

Re: CSV in zweidimensionales Array

Postby Nobbie » 02. September 2010 10:26

Ich glaube nicht, dass das hier das richtige Forum ist, Smarty hat sicherlich tonnenweise eigene Foren.

Wobei ich persönlich den Sinn Smarty nicht sehe, was kann Smarty besser als PHP? Nichts - es kann viel weniger und zu allem Überfluss benötigt es aber PHP.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests