2 dimensionales Array sortieren mit php



  • hallo!

    Ich habe ein 2 dim. array und möchte nach einem bestimmten index sortieren.

    Beispiel:
    product[i][0] = name
    product[i][1] = alter
    product[i][2] = adresse

    Jetzt möchte ich das gesamte Array vom alter absteigend sortieren - sprich der älteste ist ganz oben usw....

    krieg das irgendwie nicht hin..

    weiß jemand wie das geht?

    danke schomanl!!

    lg





  • Genau für dieses Problem habe ich vor einiger Zeit mal eine Funktion geschrieben, bin damals ganz schön lang davorgehockt, paar Stunden habe ich für die Lösung schon gebraucht. 😮

    <?php
    
    function sort_2d_array($array, $sortby, $desc)
    {
    
       $sort = array();
       $return = array();
    
       foreach($array as $key => $value)
       {
          $sort[] = $value[$sortby];
       }
    
       if($desc)
       {
          arsort($sort);
       }
       else
       {
          asort($sort);
       }
    
       foreach($sort as $key => $value)
       {
          $return[] = $array[$key];
       }
    
      return $return;
    
    }
    
    ?>
    

    Erklärung:
    array sortiert = sort_2d_array(array unsortiert, string schlüssel, bool desc)
    schlüssel = der Array-Schlüssel in der zweiten Dimension, nach dessen Wert das Array in der ersten Dimension sortiert wird. (Muss in allen Arrays der zweiten Dimension vorhanden sein).
    desc gibt an, wie sortiert wird (auf- oder absteigend). 0 = aufsteigend, 1 = absteigend.



  • $deinarray = array(
        array("foo", 23, 'foobar'),
        array("lol", 12, "baz"),
        array("baz", 18, 'quux')
    );
    
    usort($deinarray, create_function('$a,$b', 'return $a[1]-$b[1];')); 
    $deinarray = array_reverse($deinarray);
    
    var_export($deinarray);
    

    so grob...

    das array_multisort ist ganz nett, will aber spaltenweise und nicht zeilenweise haben.



  • Ah, danke euch schonmal, werd das gleich ausprobieren!!

    lg
    l00P


Anmelden zum Antworten