Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Drzewka raz jeszcze., Dynamicznie budowanie tablicy.
anas
post
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

Ostrzeżenie: (0%)
-----


Witam.

Co do tematu drzew to można go ciągnąć w nieskończoność - ale ja nie o tym. Mam zaimplementowaną klasę która buduje mi drzewo na podstawie danych z bazy. I nie jest problemem wyświętlić te dane w postaci zagnieżdzonej listy - ale albo za dużo pracuje, albo nie mogę sobie poradzić z przekopiowaniem tej listy do wielwymiarowej tablicy (budowanej dynamicznie).

Chcę w rezultacie osiągnąć coś takiego:

  1. <?php
  2. $tree = array('element'=>array(array('name' => 'test1',
  3.  'element' => array(array('name' => 'test1.1'),
  4. array('name' => 'test1.2',
  5. 'element' => array(array('name' => 'test1.2.1'),
  6.  array('name' => 'test1.2.2')
  7. )
  8.  ),
  9. array('name' => 'test1.3',
  10. 'element' => array(array('name' => 'test1.3.1')
  11. )
  12.  )
  13.  )
  14. )
  15. )
  16.  );
  17. ?>


Dodam jak wyświetlam sobie to w postaci listy HTML

  1. <?php
  2. $tree = new NestedTree('Categories', 'categoryID', 'parentCategoryID', 'name');
  3. echo '<ul>';
  4.  
  5. function render($id, NestedTree $tree) {
  6.  
  7. $children = $tree->getChildren($id);
  8.  
  9. foreach ($children as $child) {
  10. echo "<li>".$child->name."</li>";
  11. if($tree->numChildren($id) > 0) {
  12. echo "<ul>";
  13. render($child->categoryID,$tree);
  14. echo "</ul>";
  15. }
  16. }
  17. }
  18.  
  19. render(0, $tree);
  20.  
  21. echo '<ul>';
  22. ?>


Jak sami widzicie prostą rekurencją mogę to bez problemu osiągnąć dzieki wykorzystaniu kilku metod obiektu tree.
Pytanie jak korzystając z tych metod stworzyć dynamicznie tablicę jak powyższa.

Z góry dzieki za podpowiedzi.

pozdrawiam

anas

Ten post edytował anas 11.07.2006, 19:43:49
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 22:16