Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie
Maze123987
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 17.09.2009

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


Witam, mam w pliku sortowanie wg zawartości tabeli o nazwie name
  1. <option value="name"<?php if ($_POST['sort_by'] == 'name') echo ' selected="selected"'; ?>>Nazwy</option>

wyniki w niej są w formie tekstowej np nazwaA,nazwaB itp
Jak natomiast mogę ustawić sortowanie jeżeli w kolumnie stats znajdują się takie info:
  1. a:2:{s:6:"DAMAGE";i:55;s:3:"ATK";i:6;}

Nie chciałbym sortować po całej tabeli, ale tylko po określonych wartościach z niej np Damage, atk.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
no_face
post
Post #2





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Witaj, wydaje mi sie, ze wystarczyloby w tej sytuacji uzyc funkcji array_multisort

Jezeli przekszalcisz tablice w dwu-wymiarowa liczbowo-asociacyjna, to bedziesz mogl sortowac sobie dane wg. ktoregokolwiek offsetu asociacyjnego, czyli dmg, czy tam atk. Musisz tylko troche te funkcje poznac, poczytaj troche o jej mozliwosciach.
Go to the top of the page
+Quote Post
g0ther
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 2
Dołączył: 25.08.2010

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


String, który znajduję się w twojej kolumnie stats to reprezentacja tablicy po zserializowaniu, użyj:
  1. $subArray = unserialize('a:2:{s:6:"DAMAGE";i:55;s:3:"ATK";i:6;}');


Dzięki temu tablica $subArray wygląda następująco:
  1. $subArray = array("DAMAGE" => 55, "ATK" => 6);

A sortowanie tej tablicy to już chyba nie problem...
Go to the top of the page
+Quote Post
no_face
post
Post #4





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Dlatego podalem jako prawdopodobne rozwiazanie funkcje array_multisort gdyz uwazam, ze tablice, ktora zostala zaprezentowana to tak naprawde jeden z offsetow tablicy nadrzednej. Dla przykladu:

Kod
[0]
   dmg => 33
   atk => 44
[1]
   dmg => 33
   atk => 44


Jezeli jest to prawda, to wlasnie funkcja przezemnie podana bedzie bardzo pomocna, zrealizuje sortowanie nawet kilku warunkowe.

Ten post edytował no_face 29.03.2012, 11:55:29
Go to the top of the page
+Quote Post
Maze123987
post
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 17.09.2009

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


Problem w tym, że jest tam jeszcze kilka innych wyników prócz damage,atk...
I chciałbym, aby była możliwość sortowania wg każdego osobno

Ten post edytował Maze123987 29.03.2012, 21:49:52
Go to the top of the page
+Quote Post
no_face
post
Post #6





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Tak troche na szybko, ale glowne zalozenie jest, jakby cos bylo nie tak, wygoogluj sobie reszte.

  1. foreach ($twoja_tablica as $k => $v)
  2. {
  3. $zmienna[$k] = $v['dmg']; // tutaj ustalasz wg. ktorych offsetow chcesz sortowac
  4. }
  5.  
  6. array_multisort($zmienna, SORT_DESC, $twoja_tablica);
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: 23.08.2025 - 06:13