Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wczytywanie danych z pliku + sortowanie wybr. elem.
Geniesis
post
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];
}



Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Pyton_000
post
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:
  1. 0 => array(
  2. 'imie' => 'sss',
  3. 'nazwisko => 'cccc',
  4. ....
  5. ),
  6. 1 => array(
  7. 'imie' => '2sss',
  8. 'nazwisko => '2cccc',
  9. ....
  10. ),)

A potem użyć usort (Example #2) i posortować po czym chesz a potem to już tylko z górki
Go to the top of the page
+Quote Post
Geniesis
post
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ś?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 15:56