[php] sorteren van meerdere arrays

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben voor onze site bezig met een search functie.

Het werkt tot nu toe allemaal prima en krijg de volgende output uit een array als
ik ergens op zoek:

code:
1
2
3
4
5
6
7
module: forum - id: 297 - lastpostdate: 2004-08-01 - punten: 1 - lastposttime: 11:25:42
module: forum - id: 396 - lastpostdate: 2004-07-26 - punten: 1 - lastposttime: 23:08:21
module: forum - id: 425 - lastpostdate: 2004-08-01 - punten: 1 - lastposttime: 12:16:14
module: forum - id: 424 - lastpostdate: 2004-07-29 - punten: 1 - lastposttime: 11:08:59
module: topics - id: 21 - lastpostdate: 2003-08-28 - punten: 3 - lastposttime: 99:99:99
module: topics - id: 22 - lastpostdate: 2003-01-26 - punten: 3 - lastposttime: 99:99:99
module: topics - id: 24 - lastpostdate: 2003-11-13 - punten: 3 - lastposttime: 99:99:99


ik gebruik hier 5 verschillende arrays, dus alles tussen de "-".

Nu zou ik deze regels graag willen sorteren eerst op punten, dan op datum en dan op tijd. Ik dacht een functie te vinden : sort() maar dat bied voor dit probleem geen uitkomst. Ik dacht te gaan werken met array_combine om er eerst 1 array van te maken en dan te sorteren maar die functie werkt vanaf php versie 5.

Is hier een gemakkelijke oplossing voor of moet ik hier zelf iets voor maken ?

Acties:
  • 0 Henk 'm!

  • E-Vix
  • Registratie: Juni 2000
  • Laatst online: 19-09 14:42

E-Vix

Nu met sneeuw!

Volgens mij moet het kunnen met array_multisort. Dit wordt zowel in php4 als in php5 ondersteund.

Misschien denk ik wel veel te eenvoudig, maar gooi anders alle waardes achter elkaar en gooi er een scheidingsteken tussen dat absoluut niet in de data voor kan komen. Zet de informatie waar je op wilt sorteren uiteraard als eerste er in.
Sorteer nu het ene array dat je hebt, en gebruik split() om het weer in 5 verschillende arrays te splitsen.

Failed opening '/home/users/7942/signature.inc' for inclusion (include_path='.:') in /home/www/got/userstats.php on line 25


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Maak een multidimensionale array en gebruik usort.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$results = array(array('module'=>'forum','id'=>297),array('module'=>'topics','id'=>21));
usort($results,'sorteer_multi');
function sorteer_multi($a, $b)
{
 if ($a['punten'] != $b['punten'])
 {
   return strcmp($a['punten'],$b['punten']);
 }
 else
 {
  return strcmp($a['id'],$b['id']);
 }
}

Sorteert eerst op punten, daarna op id. (Beetje raar voorbeeld).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
E-Vix schreef op 01 augustus 2004 @ 20:48:
Volgens mij moet het kunnen met array_multisort. Dit wordt zowel in php4 als in php5 ondersteund.
hier ben ik nu mee bezig en volgens mij moet dit gaan werken...