Bäume in php
Tobias Hamann
- php
0 David0 Tom0 Tobias Hamann0 Tom
0 Sven Rautenberg0 Tom
0 stareagle
Hallo,
ich stehe vor dem Problem, dass ich einen Baum in php darstellen und bearbeiten muss.
Ich weiß pointer im klassichen Sinne gibt es in php nicht, aber ist es dennoch möglich speicher 'dynamisch' (php hat ja eine eigene speicherverwaltung, was auch gut so ist^^) zu belegen oder zumindest einen Baum zu simulieren?
Am liebsten wäre es mir, wenn man hier komplett ohne Datenbank auskommt, weil komplexere Abfragen in verbindung mit großen Bäumen sonnst den DB-Layer zu schnell in die Knie zwingen...
Ich bin gespannt ob ihr mir hier weiterhelfen könnt und danke schonmal im Vorraus.
Gruß TsD
Handelt es sich bei den Bäumen um Dateien oder um Daten?
Eigentlich ist das auch egal, ich kenne die gängige Metode, Bäume in Arrays zu notieren.
$irgendwas = Array(
wert1 = Array(
wert1_1 = Array(
...
),
wert1_2 = Array(
...
)
),
wert2 = Array(
wert2_1 = Array(
...
),
wert2_2 = Array(
...
)
)
);
Es handelt sich um Daten.
Danke für deine schnelle Antwort, ich werde es gleich mal versuchen.
Obwohl ich finde, dass es etwas ungewoht aussieht.
Gruß TsD
Hello,
Ich weiß pointer im klassichen Sinne gibt es in php nicht, aber ist es dennoch möglich speicher 'dynamisch' (php hat ja eine eigene speicherverwaltung, was auch gut so ist^^) zu belegen oder zumindest einen Baum zu simulieren?
Die sogenannten "Arrays" sind in PHP Baumstrukturen
Sie sind bis zur Speichergrenze dynamisch belegbar und extrem flexibel.
PHP lebt meiner Meinung nach gerade wegen dieser leistungsstarken "Array"-Funktionen
http://www.php.net/manual/en/ref.array.php
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Auch hier nochmal Danke.
Und wie ich sehe werde ich wohl nicht um Arrays herrumkommen :)
Gruß TsD
Hello,
Und wie ich sehe werde ich wohl nicht um Arrays herrumkommen :)
Die übernehmen aber alles für Dich
Du musst Dich nicht um new() und dispose(), oder wie auch immer das sonst heißen würde, kümmern.
Zum Suchen, Einfügen, Löschen in den Bäumen gibt es fertige Funktionen. Also auch hier keine Gefahr, dass was vergessen wird.
Die Struktur ist natürlich sehr einfach. Es gibt keinen strukturierten Datenbereich. Den musst Du auch als Baum auflösen. Dafür kann man sich aber "Prototypen" basteln.
Durch Adress-Referenzierung (die gibt es nämlich doch), kann man auch tief im Array versteckte teile auf einen eigenen Bezeichnner mappen. Es ist aber kein wirklicher Zeiger, sondern eine Emulation in der Bezeichnertabelle von PHP, wirkt aber genauso wie ein "Direktzeiger". Daher ist es also egal, wie PHP das intern macht.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Moin!
Die sogenannten "Arrays" sind in PHP Baumstrukturen
Da würde ich widersprechen. Es sind Listen.
Sie sind bis zur Speichergrenze dynamisch belegbar und extrem flexibel.
Sie sind flexibel, und für alle Anwendungsgebiete, die Listen oder eben Array benötigen, sehr praktisch. Für Problemstellungen, die was anderes benötigen, braucht es dann aber doch wieder entsprechenden Aufwand, damit diese "Arrays" passen.
- Sven Rautenberg
Hello,
Die sogenannten "Arrays" sind in PHP Baumstrukturen
Da würde ich widersprechen. Es sind Listen.
Das musst Du mir bitte etwas näher erläutern.
Wie sind denn die Listen miteinander verknüpft?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Moin!
Die sogenannten "Arrays" sind in PHP Baumstrukturen
Da würde ich widersprechen. Es sind Listen.
Das musst Du mir bitte etwas näher erläutern.
Wie sind denn die Listen miteinander verknüpft?
Listen haben einen definierten Anfang, ein definiertes Ende und dazwischen eine definierte Abfolge ihrer Elemente.
Und genau das haben die "Arrays" in PHP. Siehe die Funktionen:
http://de.php.net/reset
http://de.php.net/prev
http://de.php.net/next
http://de.php.net/current
Als irrelevant betrachte ich es dabei, dass die interne Datenverwaltung von PHP zur Realisierung des wahlfreien, indizierten Zugriffs auf einzelne Elemente Baumstrukturen zu Hilfe nimmt, weil sich diese Struktur dem PHP-Programmierer nicht offenbart und somit ohne Bedeutung ist.
- Sven Rautenberg
Moin,
Ich weiß pointer im klassichen Sinne gibt es in php nicht, aber ist es
Die gibts auch in Java nicht wirklich...
Arrays wurde ja schon abgesprochen. Eine Möglichkeit wäre noch, das ganze mit Klassen/Objekten zu kombinieren.
Ein Klasse Node, die als Attribut ein Array hat, in dem die Kinder gespeichert sind.
Das sollte eigentlich ganz gut funktionieren, es sei denn, es sind wirklich große Bäume, mit denen du ans Speicherlimit kommst...
Gruß
Stareagle
Moin!
Arrays wurde ja schon abgesprochen. Eine Möglichkeit wäre noch, das ganze mit Klassen/Objekten zu kombinieren.
Ein Klasse Node, die als Attribut ein Array hat, in dem die Kinder gespeichert sind.
Der Objektansatz gefällt mir spontan :) ...
Das sollte eigentlich ganz gut funktionieren, es sei denn, es sind wirklich große Bäume, mit denen du ans Speicherlimit kommst...
... allerdings fressen PHP-Datenstrukturen sowieso wahnsinnig Speicher, so dass man Extremfälle im Zweifel dann doch wieder anders lösen muß.
- Sven Rautenberg