Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Część wspólna wielowymiarowych tablic, tablice
jeliN
post 18.02.2010, 17:07:10
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.02.2010

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


Mam tablice wielowymiarowe:
Array ( [0] => Array ( [0] => 24 [1] => 25 [2] => 26 [3] => 27 ) [1] => Array ( [0] => 19 [1] => 21 [2] => 22 [3] => 23 [4] => 24 [5] => 25 ) [2] => Array ( [0] => 24 [1] => 25 ) [3] => Array ( [0] => 22 [1] => 23 [2] => 24 [3] => 25 ) [4] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 [16] => 17 [17] => 18 [18] => 19 [19] => 20 [20] => 21 [21] => 22 [22] => 23 [23] => 24 [24] => 25 ) )

I chodzi mi o to jak wyciągnąć z tego część wspólną, czyli elementy które pojawiają się w każdej tablicy.
W tym wypadku rozwiązaniem będzie 24 i 25.
Jest tylko 5 tablic z podtablicami, ale chciałbym żeby można było porównywać dowolną liczbę tablic.
Nie wiem czy można jakoś do tego wykorzystać funkcję array_uintersect i pętle lub jakieś inne działające rozwiązanie...
Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
Blame
post 18.02.2010, 17:39:16
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Jeśli chodzi o podanie powtarzających się wartości to zaglądnij do array_unique i spójrz na pierwszy komentarz od góry.

Ten post edytował Blame 18.02.2010, 17:39:54


--------------------
Go to the top of the page
+Quote Post
jeliN
post 18.02.2010, 19:05:55
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.02.2010

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


nie chodzi o wyciagniecie powtarzajacych sie elementow w jednej tablicy, bo takich nie ma
chodzi o to zeby wyciagnac powtarzajace sie w kazdej tablicy elementy
czyli np.:
tab1: 1, 2, 3, 4, 5
tab2: 2, 4, 5, 8
tab3: 1, 3, 4, 6

wynikiem jest: 4
bo występuje w kazdej tablicy

jak to rozwiazac?
jest to jeden z koncowych elementow mojej pracy dyplomowej i mam big problem ;/
Go to the top of the page
+Quote Post
thek
post 18.02.2010, 20:53:26
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pokombinuj z array_intersect. A jak? Pomyśl. Skoro masz znaleźć część wspólną w wielowymiarowej to masz prosty algorytm:
1. Weź dwie pierwsze tablice.
2. Znajdź ich część wspólną.
3. Jeśli brak takiej, zakończ algorytm z wynikiem -> brak.
4. Jeśli istnieje część wspólna, weź kolejną z tablicę.
5. Jeśli nie istnieje kolejna tablica, zakończ algorytm z dotychczasowo obliczona częścią wspólną i to jest wynik.
6. Jeśli kolejna tablica istnieje idź do kroku 2.

Chyba proste? To po prostu pętla while z zagnieżdżonym array_intersect i nic więcej.

EDIT: Na Twoim przykładzie zrobię:
tab1 intersect tab2 => 4, 5
istnieje tab3
tab3 intersect temp(4, 5) => 4
brak kolejnej tablicy, zwrócony wynik => 4

Jak zauważysz nie zawsze idziesz do ostatniej tablicy. Wystarczy, że w pewnym momencie część wspólna się "wyczyści", a algorytm zakonczy się z wynikiem pustym.

Ten post edytował thek 18.02.2010, 20:59:48


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
jeliN
post 18.02.2010, 22:04:15
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.02.2010

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


Problem rozwiązany. Dzięki winksmiley.jpg
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: 6.06.2025 - 20:14