![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich,
Mam problem z wyciągnięciem z tablicy unikalnych ścieżek. Tablica wygląda przykładowo:
oczywiście nie zawsze najdłuższa ścieżka jest na dole, chcę aby pozostały tylko najdłuższe ścieżki, czyli:
Próbowałem array_unique i funkcji z forum, ale nie działają prawidłowo. Proszę was o pomoc, z góry dziękuje wszystkim za chęci. Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Typuj wszystkie wartości na string.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ale w jakim sensie, bo nie rozumiem?
Jeżeli ścieżka będzie stringiem to co to zmieni? Ten post edytował lolek92 24.06.2009, 16:14:33 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 7 Dołączył: 15.05.2005 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Traktuj wartości z tabeli jako stringi. Poczytaj sobie tu Strings" title="Zobacz w manualu PHP" target="_manual Converting to string
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem o co wam chodzi, może źle napisałem bo ja nie mam takiego kodu
tylko to jest wynik z wyświetlenia tablicy print_r($tab), chyba że wam chodzi o to aby tę tablicę przekształcić na taką:
Czytałem w manualu to co mi podałeś ale tam jest tego tyle że nie wiem o co chodzi, więc poszukałem w google ale nie znalazłem odpowiedzi, jedynie w manualu funkcja strval() i settype() |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
No i ok, nienajgorzej.
Ale:
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
No dobra ale jak to porównywać bo jak na razie to w sumie nic się nie zmieniło, bo najbardziej to mi chodziło żebyście mi pomogli właśnie w porównywaniu i zwróceniu odpowiedniej tablicy bo tego nie wiem jak zrobić, no ale oczywiście to też się przyda na przyszłość.
Więc jeśli chodzi o porównywanie to wiem że na pewno trzeba pętle i funkcje która będzie porównywać ciągi i tu jest problem jak to rozpisać żeby wszystko dobrze porównało? |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Hmm, to chciałeś w końcu wyciągać najdłuższe, czy porównywać...?
Bo trochę zamotałeś... |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
no chcę wyciągnąć najdłuższe ścieżki ale które się powtarzają
z tego: [0] => 31 [1] => 31.1 [2] => 31.1.17 [3] => 31.1.17.18 [4] => 31.2 [5] => 31.2.13 ma zostać: [0] => 31.1.17.18 [1] => 31.2.13 bo reszta się powtarza, czyli chcę żeby zostały najdłuższe ścieżki bez krótszych które się powtarzają |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
To array_unique" title="Zobacz w manualu PHP" target="_manual nie styka...?
Do tego konkretnego przypadku by pasował. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
no ale właśnie nie działa chyba że da rady jakieś opcje dodać, ale o to chodzi że ta ścieżka może być dużo dłuższa
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 24 Dołączył: 18.01.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował Pr0100 24.06.2009, 18:03:45 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pr0100 dzięki wielkie na takie coś to bym nigdy nie wpadł, zaraz sobie przeanalizuje dokładniej jak to zrobiłeś, jeszcze raz dzięki - jesteś wielki
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 5 Dołączył: 13.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
i po co takie zamotanie?
Ten post edytował Łukasz O. 24.06.2009, 18:36:11 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 24 Dołączył: 18.01.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat i po co takie zamotanie? 1. Wydajność 2. Brak sortowania danych wyjściowych |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 2 Dołączył: 12.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Łukasz O. dzięki, widzę że są na tym forum ludzie którzy mnie rozumieją i chcą pomóc, poprzedni kod był trochę zamotany a wystarczyło tylko dobrze pomyśleć - ta głowa,
dzięki wszystkim którzy chcieli pomóc Pozdr. for all Pr0100 to co ten twój wydajniejszy, bo ja i tak wkładam ten skrypt do funkcji Pr0100 jednak twój lepiej działa bo w tym Łukasza jest błąd jeżeli jest: 1.1.1 i 1.1.11 wtedy usuwa 1.1.1 a w rzeczywistości są inne więc powinny posostać oba Ten post edytował lolek92 24.06.2009, 19:08:53 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 5 Dołączył: 13.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
linia 20: if( strpos( $klucz, $wartosc.'.' ) === 0 ){ // dodajesz kropkę, aby potwierdzić, że to podciąg rodzica
@Pr0100 nie chce mi się robić testów wydajnościowych, bo to gruba przesada będzie, ale zwróć uwagę na to, iż: 1) sortowanie wyniku nie ma nic do rzeczy, bo i tak obaj nie zachowujemy porządku kluczy, 2) robisz dokładnie to samo co ja, ale niepotrzebnie komplikując kod 3) Twój skrypt działa niepoprawnie: moje dane wejściowe, Twoja funkcja, wynik: array ( 0 => '1.1.11', 1 => '31.1.17.18.24.56', 2 => '31.2.13', 3 => '1.1.1', 4 => '31.1.17.18.24.56.78.12', ) wartość pod kluczem 1 jest podciągiem 4 mały test: http://pastebin.com/f2d4bbd26 moja wersja jest przeszło 2x szybsza poprawiona wersja
KU PAMIĘCI Ten post edytował Łukasz O. 24.06.2009, 20:52:38 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 24 Dołączył: 18.01.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Twoja funkcja, wynik: array ( 0 => '1.1.11', 1 => '31.1.17.18.24.56', 2 => '31.2.13', 3 => '1.1.1', 4 => '31.1.17.18.24.56.78.12', ) wartość pod kluczem 1 jest podciągiem 4 autor tematu chyba nie przewidział takiej funkcjonalności (przynajmniej ja go tak zrozumiałem) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat moja wersja jest przeszło 2x szybsza Ta tak ale poprzednia z:
już chyba nie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mam prace, nie mam czasu robić testów, poza tym taką walkę "na kod" uważam za bardzo próżną. Zresztą dużo będzie zależeć od danych które zostały wprowadzone (zależność pomiędzy ilością elementów a ilością kropek w pojedynczym elemencie). O i jeszcze twój skrypt sortuje elementy a autor tematu chciał je tylko przefiltrować.... |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 5 Dołączył: 13.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
walka na kod nigdy nie jest próżna - pomaga w rozwijaniu umiejętności szybkiego myślenia i reagowania na zmienne dane wejściowe - nie odbieraj tego jako ataku (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) nie taki mój cel w tym
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 16:13 |