![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 20.02.2004 Skąd: Zielona góra Ostrzeżenie: (0%) ![]() ![]() |
Dzień dobry,
mam sobie n-elementową tablicę:
Zastanawiam się jak pogrupować elementy ze względu na podobieństwo cech (surowiec_cecha3 do surowiec_cecha6). Czyli pętla sobie leci sprawdzając jednocześnie czy w tablicy nie istnieje rekord z podobnymi cechami jeśli tak wyświetli je w jednym wierszu jeśli nie łamie linie. K22222 - 1000-120_DUZO_X_Y_Z N111111 - 114-41_DUZO_X_Y_Z \n ASD7888 - 114-41_MALO_X_Y_Z proszę o podpowiedź jak się powinienem zorganizować z tym.. Ten post edytował miszz 25.08.2010, 09:34:33 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
może zacznij od sprecyzowania co to jest według Ciebie "podobna cecha"?
@DOWN: tylko, że ten przykład trochę sugeruję jakby ta segregacja miała być tylko odnośnie pola DUZO/MALO bo przedostatni i ostatni tylko tym się różnią a są w innych liniach czyli według autora nie są podobne Ten post edytował tehaha 25.08.2010, 09:54:20 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
tehaha... Może ja źle zrozumiałem, ale według autora surowiec_cecha3, surowiec_cecha4, surowiec_cecha5 i surowiec_cecha6 powinny być albo identyczne albo w dużym stopniu podobne (3/4 identyczne?)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 20.02.2004 Skąd: Zielona góra Ostrzeżenie: (0%) ![]() ![]() |
Już precyzuję ,
tak jak domniemywał Pan @thek cechą , a właściwie cechami nazwałem: surowiec_cecha3, surowiec_cecha4, surowiec_cecha5 i surowiec_cecha6. Reasumując jeśli wartości rzeczonych cech (surowiec_cecha3, surowiec_cecha4, surowiec_cecha5 i surowiec_cecha6) występują już gdzieś w tablicy, następuje grupowanie. Ale jeśli choćby jedna cecha się różni takowe grupowanie nie występuje. W tym cały szkopuł, że nie potrafię tego ugryźć.. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale jeśli choćby jedna cecha się różni takowe grupowanie nie występuje. czyli po prostu wszystkie 4 muszą być identyczne.Ja bym to zrobił tak, że z tych 4 utworzyłbym unikatowy klucz w innej wielowymiarowej tablicy i tam tworzył grupy tablic z tymi samymi cechami kod:
daje mi taki wynik: K22222 - 1000-1200 DUZO_X_Y_Z N111111 - 114-41 DUZO_X_Y_Z ASD7888 - 114-41 MALO_x_Y_Z ASD7888 - 114-41 MALO_x_Y_E ASD7888 - 114-41 MALO_x_Y_E ASD7888 - 114-41 MALO_x_Y_E ASD7888 - 114-41 SREDNIO_x_Y_E czyli w każdej linii tablice z tymi samymi cechami |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 20.02.2004 Skąd: Zielona góra Ostrzeżenie: (0%) ![]() ![]() |
Witam,
sam bym na to nie wpadł - bardzo dziękuje. Podczepię się jeszcze pond temat, mianowicie zastanawiam się jak usunąć zdublowane klucze. Mianowicie klucz 1==2, 6==7.. i trzeba było by w jakiś sprytny sposób usunąć zostawiając tylko 1 z nich. Sytuacja jest prosta jeśli jest to bardziej płaska tablica - wzorując się na rozwiązaniu tehaha. Jednak jeśli chodzi o takową nie umiem sobie poradzić.
Ten post edytował miszz 26.08.2010, 11:55:46 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
hej wystarczy tutaj prosta modyfikacja tego co CI już dałem, a mianowicie do oddzielnej tablicy zbieramy id produktów, które już umieściliśmy w tablicy i jeżeli został już wykorzystany to go nie dodajemy:
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 20.02.2004 Skąd: Zielona góra Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
nie bardzo chce działać w oparciu o nową tablicę jaką przedstawiłem powyżej. Czyli układ jest bardziej złożony 2-stopniowy to właśnie mi gmatwa strasznie sprawę. Sam pomysł z wykorzystaniem md5 jest wprost genialny.. Chyba, że coś ja sknociłem przy testowaniu. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no ale czy ta nowa tablica to nie jest wynik tego skryptu, który Ci podałem czyli po podziale na grupy? ta modyfikacja co teraz zrobiłem to dotyczy tej pierwotnej tablicy, że przy grupowaniu można od razu pominąć zdublowane rekordy
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 20.02.2004 Skąd: Zielona góra Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie jest. Tamten kod spisuje się należycie, teraz powstał właśnie nowy problem przy zupełnie innym podejściu (nowej tablicy - podobne dane wyjsciowe).
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Możesz podobną konstrukcję zastosować nawet bez md5 (odpada jakieś tam minimalistyczne prawdopodobieństwo kolizji i samo liczenie sum)
W zasadzie podobne indeksy możesz zbudować do każdego interesującego cię elementu (np id_produktu, cecha) i za i pomocą odwoływać się do odpowiednich tabel w drzewie. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no to musisz po prostu przepisać tą tablicę używając do tego kilku pętli foreach(), umieszczasz użyte id w oddzielnej tablicy i funkcją in_array() sprawdzasz czy taka tablica została już wykorzystana jeśli tak to już jej nie wsadzasz do tej nowej
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 11:29 |