SEO-Software von Suchmaschinenoptimierung.de

Kategorisierungsproblem

(hier klicken, um zum Original Thread zu gelangen)
Keenora
Hi Leute smile
Ich hab mal wieder ein Problem. Und zwar hab ich ein Array von Kategorien.
Dies sieht wie folgt aus:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
<?php [37] => Array
        (
            [categories_id] => 37
            [categories_image] => 
            [categories_icon] => 
            [parent_id] => 0
)
[44] => Array
        (
            [categories_id] => 44
            [categories_image] => 
            [categories_icon] => 
            [parent_id] => 37
)
[401] => Array
        (
            [categories_id] => 401
            [categories_image] => 
            [categories_icon] => 
            [parent_id] => 44
?>


Die Keys des Arrays sind die jeweiligen "categories_id" 's. Die "parent_id" ist die Überkategorie. Jetzt habe ich das Array so vorliegen mit einigen 100 Einträgen. Die Kategorien können beliebig tief verschachtelt sein, sprich eine Kategorie kann n-Kategorien kann n-Kategorien kann n-Kat..... enthalten.
Nun brauch ich dieses Array als Tree. Sprich:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
<?php [0] => Array 
 [categories_id] => 0
 [categories_image] => 
 [categories_icon] => 
 [sub_categories] => Array
  (
   [0] => Array
        (
            [categories_id] => 37
            [categories_image] => 
            [categories_icon] => 
            [sub_categories] => Array
            (
                 [0] => Array
                      (
                           [categories_id] => 44
                           [categories_image] => 
                           [categories_icon] => 
                           [sub_categories] => Array
                                (
                                      [0] => Array
                                      (
                                           [categories_id] => 401
                                           [categories_image] => 
                                           [categories_icon] => 
                                      )
                                )
                       )
            )
     )
) ?>


Da dies rekusriv durchlaufen muss tue ich mich damit sehr schwer...
Habt ihr da eine Idee?

mfg

Keenora
brainnrg
Teilweise getestet:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
<?php

$array[1] = array(
    "categories_id" => 1,
    "categories_image" => "",
    "categories_icon" => "",
    "parent_id" => 0
);

$array[2] = array(
    "categories_id" => 2,
    "categories_image" => "",
    "categories_icon" => "",
    "parent_id" => 0
);

$array[3] = array(
    "categories_id" => 3,
    "categories_image" => "",
    "categories_icon" => "",
    "parent_id" => 2
);

$array[4] = array(
    "categories_id" => 4,
    "categories_image" => "",
    "categories_icon" => "",
    "parent_id" => 2
);

$array[5] = array(
    "categories_id" => 5,
    "categories_image" => "",
    "categories_icon" => "",
    "parent_id" => 3
);

$array[6] = array(
    "categories_id" => 6,
    "categories_image" => "",
    "categories_icon" => "",
    "parent_id" => 5
);

function transformArray($array$parent_id=0){    
    foreach ($array as $key => $value){
        if($value["parent_id"]==$parent_id){
            unset($value["parent_id"]);
            $new_array[$value["categories_id"]] = $value;
            $new_array[$value["categories_id"]]["sub_categories"] = transformArray($array$value["categories_id"]);
        }
    }
    return $new_array;
}

var_dump(transformArray($array));
?>


Ausgabe:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
array(2) {
  [1]=>
  array(4) {
    ["categories_id"]=>
    int(1)
    ["categories_image"]=>
    string(0) ""
    ["categories_icon"]=>
    string(0) ""
    ["sub_categories"]=>
    NULL
  }
  [2]=>
  array(4) {
    ["categories_id"]=>
    int(2)
    ["categories_image"]=>
    string(0) ""
    ["categories_icon"]=>
    string(0) ""
    ["sub_categories"]=>
    array(2) {
      [3]=>
      array(4) {
        ["categories_id"]=>
        int(3)
        ["categories_image"]=>
        string(0) ""
        ["categories_icon"]=>
        string(0) ""
        ["sub_categories"]=>
        array(1) {
          [5]=>
          array(4) {
            ["categories_id"]=>
            int(5)
            ["categories_image"]=>
            string(0) ""
            ["categories_icon"]=>
            string(0) ""
            ["sub_categories"]=>
            array(1) {
              [6]=>
              array(4) {
                ["categories_id"]=>
                int(6)
                ["categories_image"]=>
                string(0) ""
                ["categories_icon"]=>
                string(0) ""
                ["sub_categories"]=>
                NULL
              }
            }
          }
        }
      }
      [4]=>
      array(4) {
        ["categories_id"]=>
        int(4)
        ["categories_image"]=>
        string(0) ""
        ["categories_icon"]=>
        string(0) ""
        ["sub_categories"]=>
        NULL
      }
    }
  }
}
Keenora
Waow, Tatsache, ohne Probleme O.o!

Vielen Dank, dass du dir die Arbeit gemacht hast großes Grinsen
(hier klicken, um zum Original Thread zu gelangen)



Tipp: Ranking-Konzept.de - Das SEO-Forum (Forum rund um die Suchmaschinenoptimierung) der artaxo AG.
Das große Versicherungs ABC von Versicherung.de - mit allen Aspekten der Computerversicherungen!
Fan-Foren.de, die große Community mit Musikforum ist ab sofort online.