![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie.
Napotkałem się z takim oto problemem: mam plik z danymi osób: //usr1 pesel imie nazwisko itd(łącznie 14) //usr2 pesel imie nazwisko itd(łącznie 14) moim zadaniem jest posortowanie użytkowników danych wg nazwisk, tak więc napisałem skrypt, który wrzuca zawartość pliku do tablicy po czym ma nadpisywać same nazwiska do $dataNoSortSurName jednak nie zapisuje mi konkretych wartości z $tabNoSortClass tylko "ArrayArrayArrayArray" rozwiązaniem problemu w teorii mogłby być zapis $dataNoSortSurName[$A] jednak to nie rozwiązuje całkowitego problemu, gdyż trzeba to później posortować i porównywać posortowane dane. musiałbym to mieć w postaci $dataNoSortSurName= array( "nazw1","nazw2"); chciałem to osiągnąć za pomocą pętli for jednak w kodzie nie można do array wrzucić for by się wykonywał, a ręczne przypisanie też odpada, ponieważ ilość użytkowników będzie się zmieniać. Czy byłby ktoś w stanie poradzić mi jak zamierzany efekt uzyskać, lub zaproponuje lepsze rozwiązanie owego sortowania? Pozdrawiam. CODE $tabNoSortClass=file("./data/class/1/childrens.txt", FILE_IGNORE_NEW_LINES); //zapis zawartości do tablicy $a=3; //wg tablicy tutaj mamy nazwisko $tnsc=count($tabNoSortClass)/14; for ($A=0;$A<=$tnsc;$A++){ $dataNoSortSurName= array($tabNoSortClass[$a]); //tutaj pojawia sie problem $a+=14; echo $dataNoSortSurName; } sort($dataSortNoSurName); $clength=count($dataSortNoSurName); for($x=0;$x<$clength;$x++){ echo $dataSortNoSurName[$x]; } |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Możesz zbudować sobie tablicę z pliku w postaci:
A potem użyć usort (Example #2) i posortować po czym chesz a potem to już tylko z górki |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Jest mały problem, ponieważ tablica $tabNoSortClass ma wartości:
Kod Array ( [0] => 123456789 [1] => 1 [2] => Grzegorz [3] => Moh [4] => 12-12-2012 [5] => Joanna [6] => Patyk [7] => Mole [8] => 12 [9] => 0 [10] => 42-424 [11] => 123456789 [12] => test1@test.pl [13] => [14] => 234567890 [15] => 1 [16] => Patyk [17] => Opa [18] => 11-12-2012 [19] => Kunegunda [20] => Piotr [21] => Opatowice [22] => 12 [23] => 12 [24] => 42-575 [25] => 234567890 [26] => test2@test.pl [27] => ) Chce to sobie uporządkować by co powtórzenie przypisywało to do kolejnego użytkownika (dokładnie tak jak napisałeś w przykładzie) wg mojej logiki powinno być to tak: Kod $tabNoSortClass=file("./data/class/1/childrens.txt", FILE_IGNORE_NEW_LINES); for($A= 0;$A<=count($tabNoSortClass);$A++){ //pętla wykonuje się wg długości tablicy if($A%14==0){ $B++; //jeżeli rozpocznie się powtórzenie to następny użytkownik } $dataNoSortChildren[$B]=array($tabNoSortClass[$A]); //użytkownik[1] = tablicy 14 pierwszych elem. później //użytkownik[2] = tablicy 14 kolejnych elem itd. } Faktycznie tablice wyglądają w ten sposób: Kod Array ( [1] => Array ( [0] => //w pliku puste miejsce przypada na 14, gdy w w/w warunku dam inną liczbę to wartość tablicy zmienia się ) [2] => Array ( [0] => ) ) Mógłbyś mnie oświecić gdzie popełniłem błąd, że tablica nie wyświetla sie w sposób, który wcześniej napisałeś? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 15:56 |