[PHP/mySQL] Auslesen eines Arrays mit unbekannter Tiefe

marneus

Registered User
Hallo zusammen!

Ich fange dieses Posting nun zum fünften Mal an, weil ich bei jedem anschl. durchlesen feststellte, dass mein Problem kaum verständlich war.

Ich habe eine mySQL Tabelle namens "virtual_folder" mit folgendem Aufbau:
Code:
folder_id (auto_increment), parent_id, foldername
Sowie eine Tabelle "files" mit diesem Aufbau:
Code:
file_id (auto_increment), filename, [...]
Die Zuordnung der Dateien erfolgt über die Tabelle files_in_folders. Wieso, weshalb, warum sollte nicht zur Debatte stehen. Es hat durchaus relevante Gründe und ist auch mehr zur Gesamtdarstellung des Problems gedacht.

Ich versuche nun ausgehend von einem Rootordner {x} alle n Unterordner in einer hierachischen Struktur abzubilden. Eines der "exklusiven" Lösungsansätze wäre das Nested Sets Modell. Dies kann aber aus Performancegründen nicht zur Anwendung kommen. Ich möchte die Parent-Idee verfolgen.

Meine ursprünglichste Idee war es, zu jedem Eintrag in `virtual_folders` ein folgendes Array zu erstellen:
PHP:
array ( 
  [id] => 1
  [name] => "root"
  [subdirs] => array()
  [files] => array()
)
In [subdirs] wären nun wiederrum zu jedem Key ein Array nach dem obigen Format zu finden. (Ich kann es nicht verständlicher ausdrücken.) Der Inhalt von Files kann vernachlässigt werden.

Problem war nun jedoch, dass ich beim Auslesen ja nicht vorherwusste, wie tief der Arraypointer "wandern" muss, bis er am Ende angekommen ist. Ich konnte es zumindest nicht logisch darstellen.

Als nächsten hoffnungsvollen Ansatz habe ich die Pfadmethode gefunden, die angeblich auch deutlich schneller sein soll. Hierbei wird ein Array nach dem folgenden Prinzip aufgebaut - sofern ich das richtig verstanden habe:
Code:
[rootdir][subdir_1][subdir_2]...[subdir_n]
Aber auch hier stellt sich mir wieder die Frage, wie lese ich sowas dynamisch aus. Vertikal das Array zu durchlaufen stellt kein größeres Problem dar, aber wie funktioniert sowas horizontal?

Ich brauche wirklich dringend einen Anstoss oder Hinweis, wie das Problem zu lösen ist. Ich bin auch für ganz andere Ansätze offen. Ich habe nur mittlerweile ein Brett vor dem Kopf, sodass ich einfach keinen logischen Ansatz mehr finde.

Vielen Dank für's Durchlesen!
 
PHP:
function durchsuchen($array)
{
	foreach ($array as $key => $value)
	{
		if (!is_array($value))
		{
			echo $value;
		} else
		{
			durchsuchen($value);
		}
	}
}

durchsuchen($array);

Öh, sowas ?
 
Hallo marneus!

Bei der verschachtelten Array Variante gehe ich mal davon aus, daß diese über eine rekursive Funktion befüllt wird. In der Funktion könnte man mit 2 statischen Variablen arbeiten die sowohl die gesamtanzahl an Elementen als auch die maximale Verschachtelungstiefe erfassen.

Gruß flyingoffice
 
Vielen Dank ihr beiden!

Auf so eine triviale Funktion wie is_array(); bin ich überhaupt noch nicht gekommen :rolleyes: Ich werde meine jetztigen Funktionen mal umbasteln und schauen, was ich raus bekomme. Muss ja gehen...!

Ich melde mich wieder.
 
Back
Top