Nach Array Key sortieren

Kalma

Erfahrenes Mitglied
Hi,

ich habe eine Frage.
Ich lese in meinem TPL-System Benutzer in ein Array. Die Bewertung ebenfalls und die kommt aus einer anderen Tabelle.

Nachher sieht mein Array ca. so aus:
PHP:
$benutzer['id'] = 1;
$benutzer['rank'] = 45; //die bewertung
$benutzer['name'] = 'Test';

Habe ich die Möglichkeit, das Array nun nach $benutzer['rank']; sortieren zu lassen, damit der höchste oben steht?


Gruß
David
 
ihr meint wohl arsort() :D

Jetz wirds bunt ;)

Wenn die User-ID im Array-Key ist und der Wert der Bewertung entspricht würde ich arsort(); nehmen: http://www.php.net/manual/de/function.arsort.php
weil diese Funktion das höchste an den Anfang stellt.

PHP:
$liste[$benutzer['id']] = $benutzer['rank'];

Beispiel:
PHP:
$liste[5] = 43;
$liste[88] = 120;
$liste[1] = 5;

arsort($liste);

Verändertes Aussehen vom Array:
Code:
$liste[88] = 120;
$liste[5] = 43;
$liste[1] = 5;
 
Zuletzt bearbeitet:
Das Problem ist, dass es sich anscheinend um ein Zweidimensionales Array handelt. Aber er verrät uns nur die Hälfte...

EDIT: Wehe die Daten sind aus ner Datenbank...

Ich hab es so verstanden:
PHP:
$benutzer = array(
	array('id' => 2, 'rank' => 88, 'name' => 'Test2'),
	array('id' => 1, 'rank' => 45, 'name' => 'Test1'),
	array('id' => 3, 'rank' => 70, 'name' => 'Test3')
);

Aber wer weiß das schon :) evt klärt er uns ja auf :D

lg
 
Zuletzt bearbeitet:
Die $result-Schleife ist nur ein einfaches
'Select * from benutzer where benutzer_name = "'.$name.'"';
PHP:
			$erg	= array();
			while($select = mysql_fetch_assoc($result))
			{
				$class				= ($i%2 == 0) ? 'class="td2"' : '';
				$id					= $select['benutzer_id'];
				$benutzername		= $select['benutzer_nickname'];
				$anrede				= $select['benutzer_anrede'];
				$titel				= $select['benutzer_titel'];
				$namenszusatz		= $select['benutzer_namenszusatz'];
				$vorname			= $select['benutzer_vorname'];
				$nachname			= $select['benutzer_nachname'];
				$strasse			= $select['benutzer_strasse'];
				$hausnummer			= $select['benutzer_hausnummer'];
				$plz				= $select['benutzer_plz'];
				$wohnort			= $select['benutzer_wohnort'];
				$telefon			= $select['benutzer_telefon'];
				
				// bewertung auslesen
				if(ranking($id) == false) {
					$select['rank']	= 0;
				} else {
					$select['rank'] = ranking($id);
				}
				
				$select['class']			= $class;
				$select['id']				= $id;
				$select['benutzername']		= $benutzername;
				$select['anrede']			= $anrede;
				$select['titel']			= $titel;
				$select['namenszusatz']		= $namenszusatz;
				$select['vorname']			= $vorname;
				$select['nachname']			= $nachname;
				$select['strasse']			= $strasse;
				$select['hausnummer']		= $hausnummer;
				$select['plz']				= $plz;
				$select['wohnort']			= $wohnort;
				$select['telefon']			= $telefon;
				
				$erg[]		= $select;
			
				$i++;
			}

Das ist die Schleife.


Das ist die Funktion für die Bewertung
PHP:
	function ranking($benutzerid)
	{
		// bewertungen des benutzers auslesen
		$rank_query		=	'SELECT
								*
							FROM
								benutzer_ranking
							WHERE
								`rank_benutzer_id` = "'.$benutzerid.'"';
		$rank_result	=	@mysql_query($rank_query);
		$rank_count		=	@mysql_num_rows($rank_result);
		
		if($rank_count == 0) {
			return false;
		} else {
			$ranks	= 0;
			
			while($select = mysql_fetch_array($rank_result))
			{
				$wert		= $select['rank_wert'];
				
				$ranks = $ranks+$wert;
			}			
			
			$ranks = $ranks/$rank_count;
			
			return round($ranks);
		}
	}
 
Und warum das ganze nich in einem Statement?

PHP:
$result = "SELECT b.*, br.rank_benutzer_id FROM benutzer b, benutzer_ranking br WHERE b.benutzer_name = '$name' AND br.rank_benutzer_id = b.benutzer_id;"

Weitere Leserlichkeiten:
PHP:
if(ranking($id) == false) {

ist zu ersetzen durch:
PHP:
if(!ranking($id)) {

oder die ganze Abfrage gleich umdrehen:
PHP:
                if(ranking($id)) { 
                    $select['rank'] = ranking($id); 
                } else { 
                    $select['rank'] = 0; 
                }
(aber das fällt dann ja eh weg)
 
Zurück