![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 20.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
poniżej kod:
powyższy skrypt ma za zadanie usunąć z tablicy $aaa wszystkie zera pod warunkiem że przy tym samym kluczu w $bbb i $ccc także są zera. oczywiście ma to zrobić z zachowaniem kluczy pozostałych wartości. wynik jest następujący: Array ( [0] => 6 [1] => 5 [2] => 4 [4] => 3 [6] => 5 [8] => 3 [9] => 3 ) czyli wszystko byłoby ok gdyby nie to że powstał klucz [9] z powtórzoną wartością dla klucza [8]. wiem jak ją usunąć ale moje pytanie brzmi: skąd wziął się tam klucz [9] i jak poprawić kod aby w ogóle nie powstawał nowy argument poza tymi z $aaa? z góry dziękuję za odp. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Kod, który podałeś niestety nie działa tak jak byś chciał. Funkcja array_filter filtruje całą tablice, a nie, tak jak Ty chcesz, konkretny element. Powinieneś przed pętlą skopiować zawartość tablicy $aaa do zmiennej $aaviltr i w pętli usuwać z niej elementy, które spełniają warunek używając do tego funkcji unset.
Dziewiąty element pojawia się właśnie dlatego, że funkcja array_filter zwraca tablicę $aaa z usuniętymi zerami, którą Ty zapisujesz w zmiennej $aaviltr. Oprócz tego jest jeszcze jedno przejście pętli, które nie wchodzi w warunek z zerami tylko dopisuje ostatni element do tablicy wynikowej. Jeśli poprawisz tak jak napisałem wyżej problem zniknie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 18:40 |