Moin!
Was mache ich denn falsch, ich müßte doch bei dem aufruf (print $CSV_table[0][0]=$class_CSVrw->CSVread("text.csv");) die erste kolonne und erste zeile erhalten
Nein, auf keinen Fall.
> print $CSV_table[0][0]=$class_CSVrw->CSVread("text.csv");
Der Rückgabewert der Methode CSVread ist ein Array. Das weist du der Variablen §CSV_table[0][0] zu und willst es (das komplette Array) dann ausdrucken. Funktioniert nicht. Du kannst nicht mit den Indexangaben [0][0] auf das Arrayunterelement des Methodenergebnisses zugreifen, sondern produzierst hier ein Array mit multiplen Dimensionen, dein gewünschtes Ergebnis [0][0] im Funktionsergebnis steckt jetzt nämlich in $CSV_table[0][0][0][0].
$CSV_table=$class_CSVrw->CSVread("text.csv");
print $CSV_table[0][0];
So weist du das Ergebnisarray der Variablen $CSV_table zu (ohne irgendwelche Arraydimensionen) und druckst dann dessen Unterelement [0][0].
Deine Klasse ist allerdings auch zu kritisieren!
> <?
> class CSVrw {
>
> function CSVrw() {
> }
>
> function CSVread($file_r) {
> $this->file_r=$file_r;
// Warum dieses sinnlose Kopieren? $file_r steht dir innerhalb der gesamten Methode zur Verfügung. Muß der Dateinamen länger gespeichert werden?
> $this->table=array();
> $this->row=0;
> $this->handle=fopen($this->file_r,"r");
// Alle diese "$this->"-Variablen sind unnötig. Warum legst du global Eigenschaften dieser Klasseninstanz an? Das sollten alles lokale Variablen dieser Methode bleiben! Also weg mit $this->handle, ersetzen durch $handle.
//Auch in den folgenden Aufrufen entsprechend.
//Abgesehen davon sind diese Klasseneigenschaften auch nirgendwo definiert. Gibt das keine Fehlermeldung?
> while(($this->data=fgetcsv ($this->handle, 1000, ",")) !== FALSE ) {
> //anzahl felder pro reihe
> $this->cols=count($this->data);
> //reihe in einem 2 dimensionalen array speichern
> for($this->i=0; $this->i<$this->cols; $this->i++) {
> print$this->table[$this->row][$this->i]=$this->data[$this->i];
> print "<br />";
> }
> print "<br />";
> //nächste zeile
> $this->row++;
> }
> //datei schliessen
> fclose ($this->handle);
>
> return $this->table;
> }
>
> function CSVwrite($file_w,$file_target) {
> $this->file_w=$file_w;
> $this->file_target=$file_target;
> }
>
> }
> ?>
- Sven Rautenberg
My sssignature, my preciousssss!