array sortieren

Lord-Roli

Mitglied
Hallo, wollte fragen wie ich folgenden Array sortieren kann:

PHP:
<?php
...
while($sql = mysql_fetch_object($sqlquery))
{
	$sql_nickname = $sql->nickname;

        $array_ = array("nickname"=>"$sql_nickname","allytag"=>"$sql_allytag","planet"=>"$sql_planet");
?>

bei sql_nickname kommen dann halt namen wie : Roland, Peter, Andreas er sollte halt dann Andreas, Peter Roland ausgeben...

ich habs schon mit sort() usw versucht aber der gibt mir dann gar nix aus... natürlich müssen die anderen variablen da mitgehen halt nicht sortiert...
 
Zuletzt bearbeitet:
PHP:
$sqluser = "SELECT * FROM portal_herrscher JOIN portal_planeten ON (portal_planeten.nickname = portal_herrscher.nickname) WHERE portal_herrscher.status = 'krieg' ";
$sqlquery = mysql_query($sqluser) or die("sqluser funktioniert nicht!<br>" . mysql_error() ."<br><br>");
		while($sql = mysql_fetch_object($sqlquery))
		{
			$sql_nickname = $sql->nickname;
			$sql_allytag = $sql->allytag;
			$sql_planet = $sql->planet;
			$sql_punkte = $sql->punkte;
			$sql_beruf = $sql->beruf;
			$sql_nehmer = $sql->nehmer;
			$sql_status = $sql->status;
			$sql_premium = $sql->premium;
			$sql_urlaub = $sql->urlaub;
						
			$sql_xa = $sql->x;
			$sql_ya = $sql->y;
			$sql_za = $sql->z; 
			
			$x1 = $xe - $sql_xa;
			$y1 = $ye - $sql_ya;
			$z1 = $ze - $sql_za;
			
			$c1 = sqrt($x1 * $x1 + $y1 * $y1);
			$entfernung = sqrt($c1 * $c1 + $z1 * $z1);
			$round_entf = round($entfernung, 0);
			
			$stunde = $entfernung/$vmax;
			$stunder = floor($stunde);
			$rest = $stunde - $stunder;
			
			$minute = $rest * 60;
			$minuter = floor($minute);
			$rest = $minute - $minuter;
			
			$sekunde = $rest * 60;
			$sekunder = floor($sekunde);
 
Das Problem bei deinem Versuch mit der sort()-Funktion dürfte gewesen sein, dass sort() alle Array-Schlüssel neu benennt. Dann hast du statt $array_['nickname'] z.B. $array_[3].

Weiters sortiert das Array die WERTE des Arrays.
 
Zuletzt bearbeitet:
.. Und noch viele weitere Sortieralgorithmen - Alle mit ihren Vor- und Nachteilen. Und der Nachteil bei der Sortierung in PHP ist allgemein die Ineffizienz gegenüber anderen Sprachen und Methoden, mal abgesehen davon, dass die grundsätzlichen Sortieralgorithmen kaum für mehrdimensionale Arrays geeignet sind, will man nach einem Schlüssel in einem Unterarray sortieren.

MySQL wird nicht nur deshalb präferiert, weil es MySQL ist, sondern eben auch, weil die Datenbanksoftware sehr schnell und effizient arbeiten kann. Sämtliche Berechnungen mit Ergebnissen laufen mit höchster Wahrscheinlichkeit schneller über die DB als mit PHP, wichtig ist nur eine ordentliche Implementierung. Dazu gehört zB auch eine identische Schreibweise für gleiche Ausdrücke, so dass der MySQL-Optimizer ordentlich greift.
Und soweit ich das sehe und einschätzen kann, sind sämtliche, von dir in PHP gefasste Berechnungen, in das Query portierbar. Dazu bedarf es nur einer ordentlichen Schreibweise des Querys (Auch MySQL-Querys kann man einrücken) und ein bisschen Nachdenken - Die MySQL-Befehlsreferenz gibt es kostenlos und online zugänglich auf der offiziellen MySQL-Seite, und für weitere Fragen in der Hinsicht gibt es auch zB Tutorials.de.
Deine grundsätzliche Herangehensweise der Sortierung via PHP finde ich nicht gut und relativ ineffizient, deshalb die Empfehlung, es ins Query zu packen. Solltest du auf PHP bestehen, hilft in der Tat ein selbstgeschriebener Sortieralgorithmus, der auf deine Bedürfnisse zugeschnitten ist. Je nach Anwendungsgebiet sind die effizienteren Sortieralgorithmen zB Quick- oder Bubblesort. Allgemeine Formulierungen dazu findest du unter anderem auf Wikipedia.
 
Zurück