![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, znalazłem taką oto funkcję na przerabianie wielowymiarowej tablicy na listę ul: http://porady-it.pl/porada-191-PHP_Jak_z_w...ypu_ul_li_.html
I nie wiem, czy to u mnie na serwerze coś cienko cienko, czy to po prostu nie jest najlepszy sposób. Bo oto taka nieduża tablica: Kod Array ( [aph] => Array ( [linki] => Array ( [download] => Array ( ) ) [strony] => Array ( [art] => Array ( ) [webmastering] => Array ( ) [kuchnia] => Array ( [grecja] => Array ( ) ) ) ) ) Nie może zostać rozpisana, ponieważ wyskakuje błąd: Cytat Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261900 bytes) in C:\Program Files (x86)\wamp\www\klasy\tree.class.php on line 88 Normalnie tablica była generowana automatycznie w oparciu o bazę mysql. Ale kiedy sam sobie wpisałem deklarację takiej tablicy i wyświetla się ten sam błąd, to doszedłem do wniosku, że coś jest nie tak. Czy mógłby mi ktoś pomóc z tym problemem? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A na pewno dobrze skopiowales do siebie kod tej funkcji? Nie zmieniales nic przypadkiem?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca, otóż ja to trochę przerobiłem na metodą wchodzącą w skład klasy obsługującej drzewa...
Kod public function treeToList($array = null) { if ($array == null) $array = $this->idTree; $list = '<ul>'; foreach ($array as $key => $record) { if (is_array ($record)) { $label = $this->nodes[$key]->getLabel(); $list.= '<li>'.$label; $list.= $this->treeToList($record); $list.= '</li>'; } else { $label = $this->nodes[$record]->getLabel(); $list.='<li>'.$label.'</li>'; } } $list.= '</ul>'; return $list; } /* $nodes - tablica przechowująca węzły $node->getLabel - metoda zwracająca etykietę (nazwę węzła) */ Hm... jak próbowałem to normalnie zrobić (żywcem skopiować ze strony) i podać tą swoją normalną tablicę to wszystko było ok. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie: if ($array == null) $array = $this->idTree;
a: if ($array === null) $array = $this->idTree; ps: $this->idTree - dziwna nazwa jak na tablicę :/ -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
ps: $this->idTree - dziwna nazwa jak na tablicę :/ Spoko, ja zwykle stosuję dziwne nazewnictwa, jak np tutaj do sprawdzenia, czy zostały przeprowadzane modyfikacje w skrypcie budującym drzewo jako wielowymiarową tablicę (klik) ![]() idTree to nazwa tablicy, która przechowuje drzewo jako wielowymiarową tablicę identyfikatorów, z którego później tworzę listę ul, żeby wypisać na stronie. Po nic innego nie jest mi to potrzebne, ale idTree - drzewo identyfikatorów chyba jakoś odzwierciedla zadanie, jakie spełnia to pole. Tak czy siak... Nie wiem, jak... ale działa, stokrotne dzięki nosporze ![]() Ale muszę przyznać, że pierwszy raz się z czymś takim spotkałem. Czy tak się dzieje dlatego, że pusta tablica mogła zostać przekonwertowana na null? Ale w takim razie, dlaczego [if (empty ($array)) = $this->idTree; ] daje takie same złe wyniki tj. z przepełnieniem pamięci? Ten post edytował Asmox 15.02.2011, 17:32:51 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
== porównuje wartosci
pusta tablica i null to dla == poprostu pusta wartosc i jest sobie równa === porównuje również typy. null a tablica to dwa różne typy -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok, dzięki, nie wiedziałem że tablica też jest oddzielnym typem. Myślałem, że tablicę bierze się jako zbiór zmiennych, z których każda ma swój typ, ale sama tablica jako tako nie jest żadnym typem. Ale dobra, już rozumiem, dzięki za rozwiązanie problemu z wyjaśnieniem, temat można zamknąć.
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:13 |