<?
// auto_class.php
class Auto
{
   // Ort und Name der CSV-Datei 
   private $autoFile="auto.csv";
   
   // zweidimensionales Array $autoList für den gesamten Inhalt der CSV-Datei
   private $autoList=array();
   
   // eindimensionales Array $propList für die Namen der Eigenschaften/Felder (properties) der Tabelle
   private $propList = array("id","marke","modell","motor","leistung","zulgesamtmasse","baujahr","vmax","zeit100");
   
   // Die Methode auto_get_data_from_file() speichert den gesamten Inhalt der CSV-Datei
   // in das zweidimensionale Array $autoList ein.
   public function auto_get_data_from_file()
   {
      // Datei zum Lesen öffnen
      $handle = fopen($this->autoFile, 'r');

      // Datei zeilenweise auslesen, fgetcsv() verwenden
      // jede Zeile in das eindimensionale Array $csv_array speichern
      for ($i = 0;($csv_array = fgetcsv($handle)) !== false;$i++)
      {
         // alle Werte des eindimensionalen Array $csv_array in das
         // zweidimensionales semi-assoziative Array $autoList speichern
         for ($j = 0;$j < count($csv_array);$j++)
         {
            $this->autoList[$i][$this->propList[$j]] = $csv_array[$j];
         }
      }
      // Datei schließen
      fclose($handle);
   }

   // Die Methode auto_list() zeigt den Inhalt des zweidimensionalen Arrays $autoList tabellarisch an.
   public function auto_list()
   {
       echo "<table><tr>";
  
       /* Der Kopfbereich der Tabelle wird mit den Eigenschaften (properties) angezeigt.
          Bei jedem Schleifendurchlauf wird der Name der Eigenschaft/des Feldes (property) der Tabelle 
          aus dem manuell festgelegten eindimensionen Array $propList angezeigt.
          Die Variable $prop enthält bei jedem Schleifendurchlauf den aktuellen Feldnamen. */
       foreach ($this->propList as $prop)
       {
          echo ("<th>".$prop."</th>");
       }
   
       echo "</tr>";
      
       /* Der Inhalt der Tabelle wird aus dem zweidimensionalen Array $autoList angezeigt.
          Bei jedem Schleifendurchlauf wird eine Zeile vollständig angezeigt.
          Das eindimensionale assoziative Array $auto enthält bei jedem Schleifendurchlauf 
          den Inhalt der aktuellen Zeile. */
       foreach ($this->autoList as $auto)
       {
          echo ("<tr>");
          /* Bei jedem Schleifendurchlauf wird der Inhalt einer Eigenschaft/eines Feldes (property) der Tabelle 
             mit Hilfe des manuell festgelegten eindimensionen Arrays $propList angezeigt.
             Die einfache Variable $prop enthält bei jedem Schleifendurchlauf den aktuellen Feldnamen */
          foreach ($this->propList as $prop)
          {
             echo ("<td>".$auto[$prop]."</td>");
          }
          echo ("</tr>");
       }
       
       echo "</table>";
   }
}
?>