Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie tablicy asocjacyjnej po kluczach w ramach jednej wartości
qiqqq
post 21.02.2013, 12:55:45
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 18.07.2007

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


Mam następujący problem. Mam tablicę asocjacyjną wyglądającą w ten sposób:

Array
(
[151] => 0
[149] => 0
[147] => 2
[145] => 0
[143] => 1
[139] => 0
[137] => 1
[135] => 1
[110] => 1
)

Sortuję ją funkcją arsort(), po wartościach (z zachowaniem kluczy) i otrzymuję następujący wynik:

Array
(
[147] => 2
[143] => 1
[135] => 1
[110] => 1
[137] => 1
[139] => 0
[145] => 0
[151] => 0
[149] => 0
)

Teraz po potrzebuję posortować ją po kluczach w ramach konkretnej wartości (czyli posortować klucze rosnąco, dla wartości 0, 1, 2, 3... itd.), żeby uzyskać taki wynik:

Array
(
[147] => 2
[143] => 1
[137] => 1
[135] => 1
[110] => 1
[151] => 0
[149] => 0
[145] => 0
[139] => 0
)

Próbowałem już różnych funkcji sortujących i ostatecznie nic mi z tego nie wypaliło. Czy ma ktoś jakiś pomysł na takie sortowanie tablicy??
Zaznaczę, że krok drugi nie jest konieczny, ostatecznie chodzi mi o uzyskanie ostatniej tablicy z pierwszej (podałem go dla zobrazowania całego procesu).
Go to the top of the page
+Quote Post
mar1aczi
post 21.02.2013, 14:20:59
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


natsort - przykład drugi.


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
grzes999
post 21.02.2013, 14:29:39
Post #3





Grupa: Zarejestrowani
Postów: 305
Pomógł: 29
Dołączył: 5.07.2011

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


Z pomocą manuala i przypadku udało mi się stworzyć to co chciałeś. Powinno działać smile.gif

  1. <?
  2. $tablica = array(151 => 0,149 => 0,147 => 2,145 => 0,143 => 1,139 => 0,137 => 1,135 => 1,110 => 1);
  3. $tablica_wzorcowa = array(151 => 0,149 => 0,147 => 2,145 => 0,143 => 1,139 => 0,137 => 1,135 => 1,110 => 1);
  4. $nowa_tablica = array();
  5. foreach ($tablica as $klucz => $wiersz) {
  6. $numer[$klucz] = $wiersz;
  7. $edycja[$klucz] = $klucz;
  8. }
  9. array_multisort($numer, SORT_DESC, $edycja, SORT_DESC, $tablica);
  10. foreach($edycja as $key)
  11. {
  12. $nowa_tablica[$key] = $tablica_wzorcowa[$key];
  13. }
  14. ?>


Ten post edytował grzes999 21.02.2013, 14:31:42
Go to the top of the page
+Quote Post
qiqqq
post 22.02.2013, 06:07:12
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 18.07.2007

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


Dzięki wielkie grzes999, właśnie o to mi chodziło wink.gif
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: 7.05.2025 - 08:00