Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Form ARRAY to UL LI list (rekurencja?)
Forum PHP.pl > Forum > PHP
guci0
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ę
mike
  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.
guci0
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

 
mike
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. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.