Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Tree in ein Array einfügen wie? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Tree in ein Array einfügen wie?


 
Sany
26-05-2007, 14:25 
 
Hallo,

Mir ist es ja schon fast peinlich, diese Frage überhaupt stellen zu müssen, aber es geht grad nicht anderst...

Und zwar, ich hab ein HTML Tree ala:

- Eintrag
|-- Untereintrag
|--- Untereintrag
|----- Untereintrag
|------- Untereintrag
|--- Untereintrag
|- Eintrag

Und zwar ich möchte das Tree direkt in ein Array inkl. Untereinträge kriegen.

Das mit den Einträgen habe ich bereits hinbekommen, jeder Eintrag hat dazu eine eigenschaft als "Single" oder "Tree".

Ich bräuchte ein Script das mir ein Array erstellt mit den Untereinträgen, leider weiß ich nie davor wieviel Untereinträge das ding hat.

Wie stelle ich es an, das Ich das Tree in nen Array krieg?

Hab bereits folgenden Code fertig:



$stg = new stg();

$tree_tmp = $stg->server_getCategorieTree("A0005600");

foreach($tree_tmp as $tree_key => $tree_value)
{
if($tree_value['prop'] == 'tree')
{
$cat = $stg->server_getCategorieTree($tree_value['wg']);
$tree_value['tree'] = array();
array_push($tree_value['tree'], $cat);

foreach($tree_value['tree'] as $key => $value)
{
while($value['prop'] == 'tree')
{
$cat = $stg->server_getCategorieTree($cat['wg']);
$tree_value['tree'] = array();
array_push($tree_value['tree'], $cat);
}
}
}


$tree_tmp[$tree_key] = $tree_value;
}

Die funktion server_getCategories, liefert mir ein Array mit den Angaben, WG, NAME und PROP (main oder tree)....

Ergebnis:

[11] => Array
(
[wg] => A1002402
[name] => OMNITRONIC Plattenspielergruppen
[prop] => tree
[tree] => Array
(
[0] => Array
(
[0] => Array
(
[wg] => A1063512
[name] => OMNITRONIC Plattenspieler direktgetrieben
[prop] => main
)

[1] => Array
(
[wg] => A1063522
[name] => OMNITRONIC Riemengetr. Plattenspieler
[prop] => main
)

[2] => Array
(
[wg] => A1063532
[name] => OMNITRONIC High-Torque Plattenspieler
[prop] => main
)

[3] => Array
(
[wg] => A1063600
[name] => Zubehör für Plattenspieler
[prop] => tree
)

)

)

)

Wie mann sieht, hakt es hier nun an den Unterkategorien, da ich leider nicht weiß wieviel Unterkategorien jeweils die Kategorie hat.

Danke schön

 
TobiaZ
26-05-2007, 16:02 
 
Stichwort "Rekursion".

 
Sany
26-05-2007, 18:33 
 
Und wo finde Ich Verwendbare informationen darüber??

Danke!

 
onemorenerd
26-05-2007, 18:46 
 
Rekursion ist nichts PHP-spezifisches.

http://www.google.de/search?q=rekursion

 
Koala
26-05-2007, 18:58 
 
eine rekursive Funktion ruft sich selber immer wieder so lange auf,
so lange eine Abbruchbedingung nicht erreicht wird.

Die Abbruchbedingung muß also gut gewählt sein,
da das Script sonst endlos läuft (laufen will ...).

http://www.tech-island.com/technet/techtalk/rekursiv_programmieren/

 
Sany
27-05-2007, 02:32 
 
Kann mir denn jemand freundlicher weiße einen Beispielcode anhand meiner bereits oben geposteten Funktion geben??

Wäre echt nett, weil ich steh echt auf'm schlauch.

Die Rekursive programmierung ist mir bekannt, aber leider fehlt es mir an der gedanklichen Umsetzung :(

 
Koala
27-05-2007, 07:55 
 
einen Beispielcode anhand meiner bereits oben geposteten Funktion

Was für ein Stuss - wenn Du meinst man soll Dir den Code schreiben,
dann schreib das auch so.

Machen tu ichs nicht.

Du hast einen Link mit Beispielen bekommen.

Wenn Du nicht in der Lage bist Beispiele selbst umzuschreiben,
dann ist Programmieren nichts für Dich.

Dieses Minimum an "gedanklicher Umsetzung", sprich "Hirn", ist einfach Voraussetzung.

 
Sany
28-05-2007, 23:20 
 
Original geschrieben von Koala
Was für ein Stuss - wenn Du meinst man soll Dir den Code schreiben,
dann schreib das auch so.

Machen tu ichs nicht.

Du hast einen Link mit Beispielen bekommen.

Wenn Du nicht in der Lage bist Beispiele selbst umzuschreiben,
dann ist Programmieren nichts für Dich.

Dieses Minimum an "gedanklicher Umsetzung", sprich "Hirn", ist einfach Voraussetzung.

Wenn ich gesagt hätte, das mir jemand den Code schreiben hätte sollen, hätte ich dies getan. hab ich aber nicht somit komm mir nicht blöde!

Um was ich gebeten habe war lediglich ein Beispiel, nicht mehr und nicht weniger, das ist kein Grund mich so blöd von der Seite anzufahren.

Wir sind schließlich in einem Forum!

 
Koala
29-05-2007, 00:16 
 
einen Beispielcode anhand meiner bereits oben geposteten Funktion

Dann erklrär mal was ein Beispielcode anhand Deiner Funktion sein soll.

Ein Beispiel ist ein Beispiel und ein konkretes Beispiel ist kein Beispiel mehr.

Warte noch ein paar Monate - vielleicht passiert ein Wunder.

 
onemorenerd
29-05-2007, 00:50 
 
http://de.wikipedia.org/wiki/Rekursion#Programmierbeispiel
http://en.wikipedia.org/wiki/Recursion#Recursion_in_computer_science
http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Rekursion
http://devzone.zend.com/node/view/id/1235

Wenn du alles gelesen und noch nichts verstanden hast, sind dir unterwegs jedenfalls genug Begriffe begegnet, um Google zu füttern.

 
Sany
29-05-2007, 19:23 
 
Original geschrieben von Koala
Dann erklrär mal was ein Beispielcode anhand Deiner Funktion sein soll.

Ein Beispiel ist ein Beispiel und ein konkretes Beispiel ist kein Beispiel mehr.

Warte noch ein paar Monate - vielleicht passiert ein Wunder.

Pass mal auf, unter einem Beispiel verstehe Ich einen Ansatz wie man anfangen könnte, jedoch kein kompletten Code.

Wenn ich jedoch einen Code hätte wollen, hätte Ich sicherlich gepostet
"Wer ist so dumm und programmiert mir die gewünschte Funktion?"

Du musst dich wohl schon für was besseres halten, wenn du gleich Neulinge dumm von der Seite anbabbelst ohne dir mal angehört zu haben was Sie überhaupt wollen.

Ja ich warte wohl lieber noch ein paar Monate, vielleicht hat sich in deiner Birne was getan und du bist mal etwas menschen freundlicher.
Leider scheint mir, du hattest wohl kein glück wo die freundlichekeit ausgeteilt wurde...


Trotzdem danke an alle ;)

 
Sany
29-05-2007, 19:26 
 
Danke, dein Beitrag hat mir geholfen, problem bereits gelöst..

Werde hier die Funktion posten, für User die das auch mal brauchen oder mal an bestimmte User geraten...


$tree_tmp = getTree("A0005600");

function getTree($wg)
{
$stg = new stg();

$tree_tmp = $stg->server_getCategorieTree($wg);

if(is_array($tree_tmp)){
foreach($tree_tmp as $key => $value)
{
if($value['prop'] == 'tree')
{
$array[] = getTree($value['wg']);
$array[] = array('wg' => $tree_tmp['wg'],'name' => $tree_tmp['name'],'prop' => $tree_tmp['prop']);
}

if(is_array($array))
{
$tree_tmp[$key]['nodes'] = $array;
unset($array);
}
}
}

return $tree_tmp;
}

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:41 Uhr.