phpbar.de logo

Mailinglisten-Archive

[php] Baum-Darstellung

[php] Baum-Darstellung

"patrick müller (aka elias)" ghostwwinside at gmx.net
Sam Mar 27 20:58:29 CET 2004


René Thiel wrote:

> Das habe ich leider noch nicht raus: wie programmiere ich es, daß die eine
> Abfrage verschachtelt ausgeführt wird, bis kein Ergebnis mehr geliefert wird,
> ohne:
> if (x1) { call
>   if (x2) { call
>     if (x3) { call
>          }
>        }
>      }
> usw., also unabhängig von der Ebenentiefe???

Naja, ich find Rekursive Funktionen immer ziemlich fummelarbeit.
Deswegen poste ich einfach mal ein Beispiel das ich benutze um
Verzeichnisse bis zu einer beliebigen Tiefe auszulesen.
Hoffe du kannst es für deine Zwecke umbauen:

function read_dir_rec($arr, $dir){
	if ($h = opendir($dir)) {
		while (false !== ($file = readdir($h))) {
			$carr = count($arr);
			$arr[$carr]['name'] = $file;
			if (is_dir($dir.$file.'/') && $file !== '.' && $file !== '..') {
				$arr[$carr]['type'] = 'dir';
				$arr[$carr]['nodes'] = null;
				read_dir_rec(&$arr[$carr]['nodes'], $dir.$file.'/');
			}
		}
	}
	closedir($h);
	return $arr;
}

>>Die Generierung des Typ 1 hat bei mir total lange gedauert.
> 
> Das liegt überwiegend an der zu übertragenden Menge an HTML-Code
> zur grafischen Aufbereitung (was vielleicht noch optimiert werden kann).

Ich würde dir wärmstens ans Herz legen keine Tabellen, sondern
Listen für die Darstellung zu verwenden. Wenn du via CSS das
list-style-image attribut noch setzt dann ist dein Dokument 
allein von der Textmenge bestimmt halb so klein. Und ich bin
mir sicher das sich Listen schneller Rendern lassen.

Viel Spass ;)

php::bar PHP Wiki   -   Listenarchive