Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie
Forum PHP.pl > Forum > PHP
Maze123987
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.
no_face
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.
g0ther
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...
no_face
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.
Maze123987
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
no_face
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);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.