Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Highscore Script meets 2-dimensionalen Array (https://www.delphipraxis.net/66037-%5Bphp%5D-highscore-script-meets-2-dimensionalen-array.html)

MisterNiceGuy 23. Mär 2006 20:12


[PHP] Highscore Script meets 2-dimensionalen Array
 
Hi ich versuche auf meiner Seite einen Highscorescript zu schalten.
Mit
Code:
while($row = mysql_fetch_object($abfrage))
    {
 $Highscore[] = array('Rang' => $row->idRank,'Name' => $row->idName,'Score' => $row->idScore,'Datum' => $row->idDate);
    }
lade ich mir die 10 besten Scores in einen Array.
Und da geht es auch schon los...

Wie sortieren ich diesen 2-dimensionalen Array nach der Score? Gibt es vielleicht eine ähnliche Arraydefinition wie in Delphi?
Delphi-Quellcode:
array:Highscore(Name,Score):string;

Flare 23. Mär 2006 20:40

Re: [PHP] Highscore Script meets 2-dimensionalen Array
 
Vielleicht suchst du ja
Code:
void asort ( array array [, int sort_flags]);
Diese Funktion macht das:
Zitat:

Diese Funktion sortiert ein Array so, dass der Zusammenhang zwischen den Indizes und den entsprechenden Arrayelementen erhalten bleibt. Dies wird hauptsächlich bei assoziativen Arrays verwendet, bei denen die aktuelle Reihenfolge der Elemente bedeutend ist.
Beispiel:
Code:
<?php
$fruits = array ("d"=>"Zitrone", "a"=>"Orange", "b"=>"Banane", "c"=>"Apfel");
asort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key = $val\n";
}
?>

Flare

MisterNiceGuy 23. Mär 2006 21:45

Re: [PHP] Highscore Script meets 2-dimensionalen Array
 
Hm ich glaube das isses nicht, ich suche eine Funktion in der ich einen Array nach einem beliebigen Element sortieren kann.

yankee 24. Mär 2006 03:28

Re: [PHP] Highscore Script meets 2-dimensionalen Array
 
Das ist es was du brauchst:
Code:
function cmp($a, $b)
{
   if ($a['score'] == $b['score']) return 0;
   return ($a['score'] > $b['score']) ? -1 : 1;
}
uksort($Highscore,"cmp");
Allerdings sieht es so aus, als bekaemest du das result aus einem mysql-result. Warum nicht gleich im query angeben "ORDER BY idScore"? Das duerfte naemlich das schnellste sein.
Und wenn ich schonmal dabei bin deinen qt zu organisieren:
Statt mysql_fetch_object kannst du auch mysql_assoc nehmen:

$result =mysql_query('SELECT spalte1 AS bla,spalte2 AS blubb FROM tab ORDER BY spalte1');
while($row =mysql_fetch_assoc($result)) $Highscore[] =$row;

Der wert mit dem mysql_fetch_assoc seine arrays indiziert ist naemlich der, den du im sql-query per AS angibst. Wenn du AS nicht angibst nimmt er den Name der Spalte.

MisterNiceGuy 24. Mär 2006 06:22

Re: [PHP] Highscore Script meets 2-dimensionalen Array
 
Klasse danke :) Ich hatte nicht dran gedacht, dass das auch über mySQL gehen könnte.

MisterNiceGuy 24. Mär 2006 06:53

Re: [PHP] Highscore Script meets 2-dimensionalen Array
 
Okay das geht nun, aber jetzt will ich noch einen neuen Datensatz einfügen und da stellt sich mir die Frage wie ich in einer foreach-Schleife auf das nächste oder voherige Objekt zugreife. Der Quellcode sollte dann so aussehen.

Code:
foreach($Highscore as $Eintrag)  
{
      if (($gesamt)>$Eintrag[Score]) AND ($Gesamt<=$Eintrag[Score]+1))
           {neusortieren();}
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz