mehrdimensionales Array sortieren

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • mehrdimensionales Array sortieren

    Hi Leute,

    folgendes Array ist die Grundlage für meine Sortierung:
    PHP Code:
    Array
    (
      [
    verein] => Array
        (
          [
    name] => Verein
          
    [priority] => 2
          
    [sub] => Array
            (
              [
    trainer] => Array
                (
                  [
    name] => Trainer
                  
    [priority] => 2
                
    )
              [
    erfolgsbilanzen] => Array
                (
                  [
    name] => Erfolgsbilanzen
                  
    [priority] => 3
                
    )
              [
    vorstand] => Array
                (
                  [
    name] => Vorstand
                  
    [priority] => 1
                
    )
            )
        )
      [
    news] => Array
        (
          [
    name] => News
          
    [priority] => 1
          
    [sub] => Array
            (
              [
    newsletter] => Array
                (
                  [
    name] => Newsletter
                  
    [priority] => 2
                
    )
              [
    archiv] => Array
                (
                  [
    name] => Archiv
                  
    [priority] => 1
                
    )
            )
        )
      [
    sportler] => Array
        (
          [
    name] => Sportler
          
    [priority] => 3
          
    [sub] => Array
            (
              [
    bestenliste] => Array
                (
                  [
    name] => Bestenliste
                  
    [priority] => 1
                
    )
              [
    steckbriefe] => Array
                (
                  [
    name] => Steckbriefe
                  
    [priority] => 2
                
    )
            )
        )
      [
    interaktiv] => Array
        (
          [
    name] => Interaktiv
          
    [priority] => 4
        
    )

    Das ich das Array mit uasort und einer Sortierfunktion sortiere ist mir schon klar. Es ist kein Problem, die erste Ebene des Arrays zu sortieren, sodass dann die Reihenfolge News, Verein, Sportler, Interaktiv herauskommt.
    Jetzt meine Frage: Wie stelle ich es denn an, dass ich auch die Unterrubriken sortieren kann? Sollte ich das Array mit foreach durchgehen und dann nach der Rubrik "sub" suchen, oder habt ihr eine andere Idee?

    Vielen Dank schon mal.
    swimming

  • #2
    naja ich würde mir nie so ein array zimmern, aber ich würde es bei der ausgabe dann sortieren...
    je nachdem was Du vorhast, wann es eben sinnmacht zu sortieren.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Comment


    • #3
      Wenn ich das richtig verstanden habe..
      Vielleicht hilft es dir
      mfg
      PHP Code:
      <?php

      /**
       * @return array
       * @param array $array_to_sort
       * @desc sort an array and subarrays
      */
      function rec_ksort($array_to_sort) {
          
      $temp_array = array();
          
      $arrays 0;
          foreach(
      $array_to_sort AS $id=>$element) {
              if(
      is_array($element)) $arrays++;
          }
          if(
      $arrays == && count($array_to_sort) > 1) {
              
      ksort($array_to_sort);
          }
          else {
              foreach(
      $array_to_sort AS $id=>$element) {
                  if(
      is_array($element)) $temp_array[$id] = rec_uasort($element);
                  else 
      $temp_array[$id] = $element;
              }
              
      ksort($temp_array);
              
      $array_to_sort $temp_array;
          }

          return 
      $array_to_sort;

      }


      $array = array('foo'=>'bar','leck'=>'mich','scheiße'=>'kacke');
      $array['mist'] = array('name'=>'hausnummer','arbeit'=>'arbeitlos');
      echo 
      '<pre>';
      print_r($array);
      print_r(rec_ksort($array));
      ?>

      Comment

      Working...
      X