Gå til innhold

sortere arrays etter flere regler


Anbefalte innlegg

Skrevet

Jeg har dette arrayet:

<?php
Array
(
   [00090] => Array
       (
           [teamName] => 00090
           [matches] => 2
           [goalsScored] => 6
           [goalsScoredAgainst] => 7
           [ties] => 0
           [points] => 3
           [victories] => 1
           [looses] => 1
       )

   [00212] => Array
       (
           [teamName] => 00212
           [matches] => 1
           [goalsScored] => 6
           [goalsScoredAgainst] => 3
           [ties] => 0
           [points] => 3
           [victories] => 1
           [looses] => 0
       )

(...)

)

Noen som kan veilede meg i hvordan jeg sorterer [00090], [00212] .. først etter poeng, og deretter målforskjell (plussmål - minusmål)?

 

Dersom du ønsker å se dataene som arrayet ligger i, kan du ta

<?php

$teamInfo = unserialize(file_get_contents('newTableSerialized.txt'));
print_r($teamInfo);
?>

Hvor da «newTableSerialized.txt» er lagt ved nedafor:

newTableSerialized.txt

Videoannonse
Annonse
Skrevet (endret)

foreach ($teamInfo as $key => $row) {
  $points[$key]  = $row['points'];
  $goalDiff[$key] = $row['goalsScored'] - $row['goalsScoredAgainst'];
}
array_multisort($points, SORT_DESC, $goalDiff, SORT_DESC, $teamInfo);

 

Slå opp array_multisort for mer info.

 

Edit: Alternativt:

usort($teamInfo,'teamSort');

function teamSort($row1,$row2) {
  $first = strcmp($row2['points'],$row1['points']);
  if ( $first ) return $first;
  else return strcmp(($row2['goalsScored'] - $row2['goalsScoredAgainst']),($row1['goalsScored']-$row1['goalsScoredAgainst']));
}

Har ikke testet hvilken av de to metodene som er raskest, men jeg vil tro det er den siste.

Endret av stiber

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...