Sven Rautenberg: Klasse soll ein 2 dim. Array als Rückgabewert haben

Beitrag lesen

Moin!

  

>   while(($data=fgetcsv ($handle, 1000,$this->delimiter)) !== FALSE ) {  
>    //anzahl felder pro reihe  
>    $cols=count($data);  
>    //reihe in einem 2 dimensionalen array speichern  
>    for($i=0; $i<$cols; $i++)  {  
>     $table[$row][$i]=$data[$i];  
>     }  
>     //nächste zeile  
>     $row++;  
>    }  

Das da läßt sich noch extrem verbessern. Warum die for-Schleife? Warum nicht einfach:

  
  while(($data=fgetcsv ($handle, 1000,$this->delimiter)) !== FALSE ) {  
   //anzahl felder pro reihe  
   $cols=count($data);  
   $table[$row]=$data;  
   $row++;  
  }  

$data ist ein Array, und du kopierst mit der for-Schleife jedes Feld dieses Arrays in neue Felder eines anderen Arrays. Das geht auch einfacher, indem einfach das ganze Array kopiert wird.

Und als zweite Stufe der Verbesserung:

  
  while(($data=fgetcsv ($handle, 1000,$this->delimiter)) !== FALSE ) {  
   $table[]=$data;  
  }  

$table wird am Anfang als leeres Array definiert, und mit nur [] am Ende wird automatisch $data als neues Element, automatisch aufwärts zählend im Index, angehängt.

Die Vorbelegungen jetzt nicht mehr genutzter Variablen können natürlich dann auch entfallen. :)

- Sven Rautenberg

--
My sssignature, my preciousssss!