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
 
Start new topic
Odpowiedzi
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




wbrew pozorom nie jest to latwa czynnosc...

Sam kiedys sie meczylem i to naprawde dlugo.
Problemem jest to ze ciezko jest "dynamicznie" odwolywac sie do x kluczy np
$aTree['root']['node1']['node2']

o ile wygenerowanie tablicy z tymi kluczami tzn
array( root, node1, node2 );
Nie jest problemem (zalezy od typu drzewek) to dostanie sie do tych kluczy bez pomocy eval jest chyba nie mozliwe.

W tym przypadku musisz podawac referecje wskazujaca na odpowiedni klucz w tablicy do ktorego zostana przypisane kolejne dzieci.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 12:42