[PHP] zweidimensionales Array sortieren



  • Hallo Leute,

    ich habe folgendes Array:

    for($i=0; $i<123; $i++) {
      // hier erfolgt Berechnung der Werte $gewinn, $entfernung usw.
      // ....
    
      $route[$n]['rohstoff'] = $rohstoff;
      $route[$n]['von'] = $gvg_ver;
      $route[$n]['nach'] = $gvg_an;
      $route[$n]['gewinn'] = $gewinn;
      $route[$n]['entfernung'] = $entfernung;	
    }
    

    Nun möchte ich dieses zweidimensionale Array entweder nach Gewinn oder Entfernung sortieren lassen, aber bis jetzt habe ich es immer nur nach der ersten Spalte (rohstoff) geschafft.

    Danke für eure Hilfe.
    Gruß bais



  • Zeig mal wie du sortierst, du musst einfach beim tauschen alle Elemente tauschen
    und nicht nur die erste Spalte (müsstest daher wohl nen eigenen Sortieralgo implementieren).



  • Habe ein Lösung gefunden. Ich erstelle einfach viele eindimensionale Arrays und sortiere dann das gewünschte mittels arsort(), wobei die Verbindung zum Index ja beibehalten wird. So kann ich im anschließenden Durchlauf mit dem sortierten Index auf die anderen Array zugreifen und erhalte die richtigen Daten 🙂

    for($i=0; $i<123; $i++) {
      // hier erfolgt Berechnung der Werte $ergebnis, $dist usw.
      // ....
      $rohstoff[$n] = $ress[$i];
      $von[$n] = $gvg_ver;
      $nach[$n] = $gvg_an;
      $gewinn[$n] = $ergebnis;
      $entfernung[$n] = $dist;
    }
    
    // Sortieren
    arsort($gewinn);
    reset($gewinn);
    
    // Ausgabe 
    while(list($key, $val) = each($gewinn)) 
      echo $rohstoff[$key].' von '. $von[$key] .' nach '. $nach[$key] .' mit '. $val .',
           Entfernung '. $entfernung[$key] .'<br>';
    

Anmelden zum Antworten