Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie jak w MySQL
KsaR
post
Post #1





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


  1. $provinces=array(...);
  2. arsort($provinces);
  3. var_dump($provinces);
  4. krsort($provinces);
  5. var_dump($provinces);

Kod
array(16) { ["Warmińsko-Mazurskie"]=> string(1) "1" ["Kujawsko-Pomorskie"]=> string(1) "1" ["Śląskie"]=> string(1) "0" ["Pomorskie"]=> string(1) "0" ["Świętokrzyskie"]=> string(1) "0" ["Wielkopolskie"]=> string(1) "0" ["Zachodniopomorskie"]=> string(1) "0" ["Podlaskie"]=> string(1) "0" ["Opolskie"]=> string(1) "0" ["Lubuskie"]=> string(1) "0" ["Lubelskie"]=> string(1) "0" ["Łódzie"]=> string(1) "0" ["Małopolskie"]=> string(1) "0" ["Dolnośląskie"]=> string(1) "0" ["Mazowieckie"]=> string(1) "0" ["Podkarpackie"]=> string(1) "0" } array(16) { ["Świętokrzyskie"]=> string(1) "0" ["Śląskie"]=> string(1) "0" ["Łódzie"]=> string(1) "0" ["Zachodniopomorskie"]=> string(1) "0" ["Wielkopolskie"]=> string(1) "0" ["Warmińsko-Mazurskie"]=> string(1) "1" ["Pomorskie"]=> string(1) "0" ["Podlaskie"]=> string(1) "0" ["Podkarpackie"]=> string(1) "0" ["Opolskie"]=> string(1) "0" ["Małopolskie"]=> string(1) "0" ["Mazowieckie"]=> string(1) "0" ["Lubuskie"]=> string(1) "0" ["Lubelskie"]=> string(1) "0" ["Kujawsko-Pomorskie"]=> string(1) "1" ["Dolnośląskie"]=> string(1) "0" }


Jak widac pierwszy po pierwszym dumpie, posortowało wartosciami malejąco.
Drugi psuje wszystko.

Chce posortowac coś typu MySQL że zapamieta poprzednie sortowanie i przy kolejnym posortuje na tej samej tablicy ale nie od nowa...

W Mysql bym to zrobil: ORDER BY `values` DESC, `keys` DESC

Mam nadzieje że wyraziłem się jasno :|
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Te funkcje są od siebie kompletnie niezależne, także wynikiem całości będzie wyłącznie wynik działania krsort. Aby osiągnąć to o co pytasz możesz skorzystać z usort dla której utworzysz swoją własną funkcję porównującą.
Go to the top of the page
+Quote Post
KsaR
post
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(Crozin @ 25.01.2015, 17:17:14 ) *
Te funkcje są od siebie kompletnie niezależne, także wynikiem całości będzie wyłącznie wynik działania krsort. Aby osiągnąć to o co pytasz możesz skorzystać z usort dla której utworzysz swoją własną funkcję porównującą.

  1. $provinces=array('Dolnośląskie'=>$top['p1'],'Kujawsko-Pomorskie'=>$top['p2'],'Lubelskie'=>$top['p3'],'Lubuskie'=>$top['p4'],'Łódzie'=>$top['p5'],'Małopolskie'=>$top['p6'],'Mazowieckie'=>$top['p7'],'Opolskie'=>$top['p8'],'Podkarpackie'=>$top['p9'],'Podlaskie'=>$top['p10'],'Pomorskie'=>$top['p11'],'Śląskie'=>$top['p12'],'Świętokrzyskie'=>$top['p13'],'Warmińsko-Mazurskie'=>$top['p14'],'Wielkopolskie'=>$top['p15'],'Zachodniopomorskie'=>$top['p16']);
  2. function arsortdesc($provinces)
  3. {
  4. $prov=(array)$provinces;//error: bez tego "string given" z tym "null given"
  5. arsort($prov);
  6. krsort($prov);
  7. return $prov;
  8. }
  9. usort($provinces, 'arsortdesc');

Nie ogarniam .., zwraca zle klucze-liczbowe (zaraz zedytuje - dalej testuje)

  1. function arsortdesc(array $provinces)
  2. {
  3. arsort($prov);
  4. krsort($prov);
  5. return (array)$prov;
  6. }

Teraz zwraca ze "Catchable fatal error: Argument 1 passed to arsortdesc() must be an array, string given in" (w lini z usort).
Nie potrafie (IMG:style_emoticons/default/tongue.gif)

Ten post edytował Ksar 25.01.2015, 17:50:51
Go to the top of the page
+Quote Post

Posty w temacie


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.10.2025 - 11:01