![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam menu rozwijane posiadające elementy oraz podelementy. U mnie $menu to obiekt klasy menu gdzie jest tablica elementów, a każdy element ma swoją tablicę podelementów. Obie tablice (elementów i podelementów) są indeksowane numerycznie. Jeżeli usuwam jakiś element bądz podelement unsetuje go. Przez to tworzy się tablica z dziurami. Poniższy przykład jest tylko oglądowy co chcę pokazać, bo tak naprawdę to są obiekty bardziej skomplikowane, które mają swoje właściwości i metody.
Jeżeli teraz usunę element o indeksie 1 to pozostanie mi
i teraz jeszcze usunę podelement pierwszej tablicy o indeksie 1 to
co mi bardzo nie odpowiada, bo zostają dziury więc napisałem funkcję porządkującą, która nie działa, bo według mnie resetowanie nie jest dobrze zrobione. Np. jeżeli zmodyfukiję trochę poniższą funkcję i zrobię tylko jedną pętle np. dla samym elementów, bądź dla samych podelementów to działa, ale jeżeli chcę zrobić obie i przejść przez wszystko to dochodzi tylko do pierwszego elementu zagłębia się do podelementów poprawia je ale już nie przechodzi do następnego elementu.
Jakieś pomysły? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Użyj foreach zamiast for lub w for'ze sprawdzaj czy dany index istnieje (isset()).
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
A tak właściwie to czemu Ci te dziury przeszkadzają, przecież tak czy owak kolejność jest nadal zachowana. Podejrzewam, że wyświetlanie tego zrobiłeś w jakiś dziwny sposób, zamiast użyć normalnie foreach dla każdego z elementów i podelementów ? No chyba że sztuka dla sztuki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak ponieważ mam funkcję
Bez uporządkowania zwraca zły index.To był pierwszy powód, a drugi to mam funkcję dodajElement()
Bez uporządkowania dodaje elementy w róznym miejscu raz za tym elementem a raz za innym. A ja bym chciał na końcu. (hmm można by chyba dać array.pusha() i to chyba dodał by na końcu). Oto moja klasa menu
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 11 Dołączył: 2.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wynik:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 12.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Bez uporządkowania dodaje elementy w róznym miejscu raz za tym elementem a raz za innym. A ja bym chciał na końcu. (hmm można by chyba dać array.pusha() i to chyba dodał by na końcu). Oto moja klasa menu Sprawdziłem i jednak bzdury gadam bo i pushem i $tab[] dodaje na końcu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bez uporządkowania zwraca zły index.To był pierwszy powód, a drugi to mam funkcję dodajElement()
Zmieniłem na
i teraz działa zwracanie dobrego indeksu. Teraz tak tylko z ciekawości się zastanawiam, jak zrobić aby iterować po tablicy wielowymiarowej z użyciej each Jang świetnie, że Ci chodzi. Mi niestety nie. Narazie mam usuwanie bez uporządkowania , ale warto coś z tym zrobić więc jeszcze podrążę temat. Moja klasa:
I dałem do nich taką funkcję, która nie działa
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 14:17 |