Hallo,
Iteration statt Rekursion.
Hörte sich eher nach Refaktorisierungsprinzip an:
http://www.refactoring.com/catalog/replaceRecursionWithIteration.html
Man könnte es ja gleich beim Einlesen machen, aber ich kriegs bei Iteration nur mit Umkopieren hin:
<?php
class CSV
{
// Wird mit CSV-Daten bestückt
private $_table = NULL;
function __construct($filePath) {
$fileHandle = @fopen($filePath,"r");
if ($fileHandle) {
while (($row = fgetcsv($fileHandle)) !== false) {
//exclude empty lines
if (!is_array($row)) {
continue;
}
foreach ($row as $cellValue) {
$trimmedRow[] = trim($cellValue);
}
$this->_table[] = $trimmedRow;
}
}
// merci handle, go free
fclose($fileHandle);
}
public function getTable() {
if (NULL !== $this->_table) {
return $this->_table;
}
return false;
}
}
$csv = new CSV("test.csv");
var_dump($csv->getTable());
Ich halte es für fraglich, dass zwei Schleifen schneller sind als ein Funktionsaufruf und PHPs interne Abarbeitung. Letzten Endes werden die Unterschiede jedoch nicht so groß sein, dass es bei normaler Anwendung ins Gewicht fallen wird.
Übersichtlich solls halt sein (und wartbar(;-)). Insofern find/fand ich array_walk_recursive ja eigentlich nicht so schlecht.
Gruß
jobo