Array sortieren

ShooterMS

Mitglied
Ich habe ein Array:

$array = array("a"=>"PHP","c"=>"ASP","d"=>"C","b"=>"C++");

Wie sortiere ich das Array nach PHP, ASP, C, C++ ?

Danke
 
PHP.net ist dein Freund:
[phpf]sort[/phpf]

Oder allgemein zu Arrays und weiteren Sortierfunktionen:
[phpf]array[/phpf]
 
tut mir leid hab mich zu kurz ausgedrückt:

Ich möchte aus einer Tabelle Datensätez auslesen. Dies geschieht mittels mysql_fetch_array()

-> ergibt ein Array mit den Feldern (ID, Name, Zahl)

Ich habe nun 10 Datensätze, ergo 10 Arrays.

Jetzt berechne ich das Feld "Zahl" neu, also ich addiere zB Werte hinzu.

Nun möchte ich die 10 Datensätze sortiert nach dem neu berechneten Wert "Zahl" ausgeben.

Die Werte kann ich nicht in der Mysql-Abfrage berechnen, da die Berechnung auf anderen Mysql-Abfragen beruhen.

Ich dachte nun, ich stecke die 10 Datensätze in ein Multidimensionales Array, berechne die Werte und sortiere das Array neu.

$superarray = array ($array1 = array (id, name, zahl), $array2 = array (id, name, zahl), ...)

wie sortier ich nach den Werten Zahl?
Bei den ganzen Arrayfunktionen finde ich nur Sortierer die nach Indizes sortieren ...
Geht das überhaupt?

Danke
 
Diese Funktion sortiert ein Array nach Schlüsseln:
--> [phpf]ksort[/phpf]

Allerdings denke ich, dass man das ganze auch in einer SQL-Abfrage lösen könnte, auch wenn die Bedingungen für die Berechnung aus anderen Abfragen stammen.

snuu
 
das Beispiel zu ksort:

<?php
$fruits = array ("d"=>"Zitrone", "a"=>"Orange", "b"=>"Banane", "c"=>"Apfel");
ksort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key = $val\n";
}
?>

Dieses Beispiel würde folgendes ausgeben:

a = Orange
b = Banane
c = Apfel
d = Zitrone


Ich möchte aber die Ausgabe nach Frucht sortiert:
Apfel
Banane
Orange
Zitrone

edit: das würde mit asort gehen... aber was ist mit dem folgenden Problem, wenn die Farben zu den Früchten auch noch im Array stehen? Wie sortier ich dann nach Name oder Farbe?

Also am besten so: wahlweise nach Frucht oder nach Farbe sortieren.
$fruits = array (d=array"Zitrone", "gelb"
a=array"Orange", "rot"
b=array"Banane", "gelb"
c=array"Apfel", "grün");
 
Zuletzt bearbeitet:
Wenn Du ein Mehrdimensionales Array hast - in Deinem Beispiel mit den Zeilen-Arrays aus der SQL-Abfrage, könnte das Array so aufgebaut sein:
PHP:
  $multiarray[] = array ('punkte'=>10 ,'anderesFeld'=>'daten1');
  $multiarray[] = array ('punkte'=>120,'anderesFeld'=>'daten2');
  $multiarray[] = array ('punkte'=>5  ,'anderesFeld'=>'daten3');
  $multiarray[] = array ('punkte'=>33 ,'anderesFeld'=>'daten4');

Wenn das der Fall ist und Du nach dem Feld 'punkte' sortieren möchtest, geht das mit Hilfe der Funktion [phpf]usort[/phpf] und einer benutzerdefinierten Vergleichsfunktion:
PHP:
  $multiarray[] = array ('punkte'=>10 ,'anderesFeld'=>'daten1');
  $multiarray[] = array ('punkte'=>120,'anderesFeld'=>'daten2');
  $multiarray[] = array ('punkte'=>5  ,'anderesFeld'=>'daten3');
  $multiarray[] = array ('punkte'=>33 ,'anderesFeld'=>'daten4');

  function cmp ($a, $b) {
    if ($a['punkte'] == $b['punkte']) return 0;
    return ($a['punkte'] < $b['punkte']) ? -1 : 1;
  }
  usort ($multiarray, "cmp");

snuu
 
Zurück