Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Form ARRAY to UL LI list (rekurencja?)
guci0
post 11.12.2008, 12:26:06
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.10.2008

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


Witam serdecznie,

Drodzy UŻYTKOWNICY - zapewne każy z Was kiedyś spotakł się lub jeszcze
spotka z podobną sytuacją, czyli GENEROWANIE STRUKTUR DRZEWIASTYCH, jak wiekszość wie prawie zawszę wiążą się z tym problemy.

Cóż i ja dziś mam taką systuację, nie będę ukrywał, że przejrzałem forum, przejrzałem sieć
pod wieloma kątaki i stricte, konkretnej odpowiedzi/rozwiązania nie zanalzłem (jeszcze) - dlatego postuje tutaj.

Spójrz:

Mam sobie taką tablicę:
Kod
$aTree[x][1]['MA DZIECI'] = 'x.1'; 
$aTree[x][1][2]['MA DZIECI'] = 'x.1.2'; 
$aTree[x][1][2][3]['MA DZIECI'] = 'x.1.2.3'; 
$aTree[x][1][2][3][4]['BRAK'] = 'x.1.2.3.4'; 
$aTree[x][1][5]['MA DZIECI'] = 'x.1.5'; 
$aTree[x][1][5][6]['BRAK'] = 'x.1.5.6'; 
$aTree[x][1][7]['MA DZIECI'] = 'x.1.7'; 
$aTree[x][1][7][8]['MA DZIECI'] = 'x.1.7.8'; 
$aTree[x][1][7][8][10]['BRAK'] = 'x.1.7.8.10'; 
$aTree[x][1][7][8][11]['BRAK'] = 'x.1.7.8.11'; 
$aTree[x][1][7][8][12]['BRAK'] = 'x.1.7.8.12'; 
$aTree[x][1][7][8][13]['BRAK'] = 'x.1.7.8.13'; 
$aTree[x][1][7][8][14]['BRAK'] = 'x.1.7.8.14'; 
$aTree[x][1][7][8][15]['BRAK'] = 'x.1.7.8.15'; 
$aTree[x][1][7][8][16]['BRAK'] = 'x.1.7.8.16'; 
$aTree[x][1][7][8][17]['BRAK'] = 'x.1.7.8.17'; 
$aTree[x][1][7][8][18]['BRAK'] = 'x.1.7.8.18'; 
$aTree[x][1][7][8][9]['BRAK'] = 'x.1.7.8.9'; 
$aTree[x][19]['MA DZIECI'] = 'x.19'; 
$aTree[x][19][20]['MA DZIECI'] = 'x.19.20'; 
$aTree[x][19][20][21]['MA DZIECI'] = 'x.19.20.21'; 
$aTree[x][19][20][21][22]['BRAK'] = 'x.19.20.21.22'; 
$aTree[x][19][20][23]['MA DZIECI'] = 'x.19.20.23'; 
$aTree[x][19][20][23][24]['BRAK'] = 'x.19.20.23.24'; 
$aTree[x][25]['MA DZIECI'] = 'x.25'; 
$aTree[x][25][26]['MA DZIECI'] = 'x.25.26'; 
$aTree[x][25][26][27]['MA DZIECI'] = 'x.25.26.27'; 
$aTree[x][25][26][29]['MA DZIECI'] = 'x.25.26.29'; 
$aTree[x][25][26][29][28]['BRAK'] = 'x.25.26.29.28';
...


EDIT: Wcielo mi kawalek posta (ahh...)

Tak więce szybko napisze, raz jeszcze co napisałem wcześniej. Próbowałem to przeiterować różnymi
metodami, przede wszystkim rekurencja i problemy pojawiają się z przede wszystkim dobrym zamknieciem tagów <UL><li></li></UL>

Proszę raz jeszcze o pomoc i z góry
WIELKIE dzięki za zaangażowanie.

Pozdrawiam

Paweł

P.S. Strukturę tablicy można zmienić więc tutaj
mamy elastyczną kwestię

Ten post edytował guci0 11.12.2008, 12:29:30
Go to the top of the page
+Quote Post
mike
post 11.12.2008, 12:31:33
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. function gererateUL(array $tree) {
  4.    echo '<ul>';
  5.    foreach ($tree as $item) {
  6.        if (is_array($item)) {
  7.            gererateUL($item);
  8.        } else {
  9.            echo '<li>' . $item . '</li>';
  10.        }
  11.    }
  12.    echo '</ul>';
  13. }
  14.  
  15. gererateUL($aTree);
  16. ?>


O ile się nie mylę to będzie cos takiego. Pisane z palca, więc może być jakaś usterka. Popraw sobie.
A takich postów jest mnóstwo.
Go to the top of the page
+Quote Post
guci0
post 11.12.2008, 13:16:49
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.10.2008

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


Cytat(mike @ 11.12.2008, 12:31:33 ) *
O ile się nie mylę to będzie cos takiego. Pisane z palca, więc może być jakaś usterka. Popraw sobie.
A takich postów jest mnóstwo.

Masz rację z jednym, że takich postów jest wiele, ale
są podobne do twojej odpowiedzi. 

WAŻNE: jest to, że is_array nie załatwia sprawy, już to przerabiałem i nawet wypróbowałem zaproponowany przez Ciebie kod i muszę Cię rozczarować
znacznik niedokońca dobrze się zamykają - można próbować z IF'ami itp, ale
to nie o to (chyba) chodzi, tak czy inaczej dzięki za przykład winksmiley.jpg

 

Ten post edytował guci0 11.12.2008, 13:17:15
Go to the top of the page
+Quote Post
mike
post 11.12.2008, 13:30:20
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(guci0 @ 11.12.2008, 13:16:49 ) *
(...) i nawet wypróbowałem zaproponowany przez Ciebie kod i muszę Cię rozczarować znacznik niedokońca dobrze się zamykają (...)
Dramatyzujesz. Przecież to pierdoła tongue.gif
I już masz dobrze zagnieżdżone znaczniki:
  1. <?php
  2.  
  3. function generateUL(array $tree) {
  4.    echo '<ul>';
  5.    foreach ($tree as $item) {
  6.        echo '<li>';
  7.        if (is_array($item)) {
  8.            gererateUL($item);
  9.        } else {
  10.            echo $item;
  11.        }
  12.        echo '</li>';
  13.    }
  14.    echo '</ul>';
  15. }
  16.  
  17. ?>
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 17.06.2025 - 16:39