2 Variablen nach 1 sortieren

TheSchmidey

Mitglied
Hallo Forum.

Nach langer Suche hier im Forum und auf Google kam ich zum Entschluss mein Problem in einem Forum zu posten...

Folgender Sachverhalt:
Ich habe ein Script, welches Variablen beinhaltet welche mit Zahlen hinterlegt sind. Diese möchte ich absteigend sortiert haben, aber es gibt ein kleines Problemchen dabei: Ich möchte ausserdem den Namen der zu sortierenden Datei beibehalten denn er soll wenn die Zahl sortiert wird mit springen. Sagen wir die Zahl 56 mit einer variable $a_l hinterlegt, soll mit dem Namen TheSchmidey der mit der Variable $a_n hinterlegt ist, nach $a_l sortiert werden.
Insgesamt habe ich 15 variablen der Namen ($b_n; $c_n; usw...) und 15 der Zahlen ($b_l; $c_l; usw..).

Ich hoffe ihr versteht was ich meine :D

Greatz,
TheSchmidey
 
Keine Ahnung welchen Sinn die Variablennamen haben und wie sie untereinander in Verbindung stehen. Aber warum nimmst du nicht ein Array welches alle Angaben beinhaltet und sortierst das!?
 
Am besten über Arrays
PHP:
	//Array erstellen
	$myVars[] = array('name' => $a_n, 'number' => $a_l);
	$myVars[] = array('name' => $b_n, 'number' => $b_l);
	$myVars[] = array('name' => $c_n, 'number' => $c_l);	
	//TODO: Alle weiteren analog anhängen

	//Sortieren nach der Nummer. Die Funktionarray_sort_by_subarray_item()  ist weiter unten
	//im Code drin. Du kannst sie einfach bei dir in den Code kopieren
	array_sort_by_subarray_item($myVars, 'number', SORT_ASC, SORT_NUMERIC);

	//sortiertes Resultat ausgeben
	foreach($myVars as $myVar){
		echo $myVar['name'] . ": " . $myVar['number'] . "<br />";
	}

/**
 * mpl      by ERB software
 * http://wiki.yaslaw.info/wikka/PhpArraySortBySubarrayItem
 * @author  stefan.erb(at)erb-software.com
 * @since   PHP 5.2
 * Sortiert einen 2-Dimensionalen Array nach einem Key in der 2ten Dimension
 * @param $array        Array der sortiert wird
 * @param $key          Key im Array der sortiert werden soll (key oder index)
 * @param $direction    Sortierrichtung. SORT_ASC oder SORT_DESC
 * @param $sort_flags   SORT_REGULAR, SORT_STRING, SORT_NUMERIC. Siehe sort_flags-Parameter von sort()
 */
function array_sort_by_subarray_item(&$array, $key, $direction = SORT_ASC, $sort_flags = SORT_REGULAR){
    $sort = array();
    foreach($array as $index => $item){
        $sort[$index] = strtoupper($item[$key]);
    }    
    return array_multisort($sort, $direction, $sort_flags, $array);
 
Noch eine Frage: wenn ich das Script von Yaslaw nehme, wie kann ich das auf 10 statt 15 begrenzen (die 15 sollen aber noch stehen bleiben)
 
Die Ausgabe, nehme ich an. Bau einen Counter in die Schleife ein und sobald er 10 erreicht hat, machst du ein break. Zwar nicht wirklich guter Programmierstil, aber einfacher als die Schleife umzuschreiben. ;)
 
Zurück