Mehrdimensioales Array nach letztem Key sortiern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrdimensioales Array nach letztem Key sortiern

    Hallo,
    ich habe folgendes mehrdimensionales Array:
    PHP-Code:
    $feed_object['02_article_picture']['text'][1] = "Headline";
    $feed_object['02_article_picture']['image_upload'][2] = "Image";
    $feed_object['02_article_picture']['textarea_large'][3] = "Plain Text";
    $feed_object['02_article_picture']['image_upload'][4] = "Icon"
    nun wird das array nach dem zweiten schlüssel sortiert, ich möchte aber, dass sie nach dem letzten [] schlüssel sortiert wird wenn ich in einer funktion folgendes zurücgebe:

    PHP-Code:
    return $feed_object[$table
    hat jemand ein Tipp, mit sort-funktionen bin ich noch nicht so weitergekommen
    Zuletzt geändert von sanktusm; 05.03.2012, 20:43.

  • #2
    Hallo,

    guck dir mal uasort() an. Um eine eigene Vergleichsfunktion wirst du nicht (zumindest nicht sinnvoll) herumkommen.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      folgendes habe ich versucht...

      PHP-Code:
      function cmp($a$b) {
           if (
      $a == $b) {
              return 
      0;
           }
            return (
      $a $b) ? -1;
      }  
       
      $fields_feed $this -> templateFeeds($getvalues['format'],0);
           
           
      uksort($fields_feed, array($this'cmp')); 
      nun wird leider immer noch nach dem 2. Wert also text oder image_upload sortiert, wie kann ich veranlassen dass nur integere keys sortiert werden oder eben der 3. schlüssel?

      PHP-Code:
      $feed_object['02_article_picture']['text'][1] = "Headline";
      $feed_object['02_article_picture']['image_upload'][2] = "Image";
      $feed_object['02_article_picture']['textarea_large'][3] = "Plain Text";
      $feed_object['02_article_picture']['image_upload'][4] = "Icon"

      Kommentar


      • #4
        Hi sanktusm,
        vielleicht lieg' ich ja falsch, aber ich denke, dass es so nicht (oder nur mit viel Aufwand) möglich ist,
        nach dem letzten Feld zu sortieren, da du ja einen eindeutigen Schlüssel benötigst, nach welchem
        sortiert wird, ähnlich wie: Nachname=Schmitz, Vornamen=Anton, Xaver, Heinz, Fritz . . . etc..

        Ergibt dann sortiert:
        Schmitz - Anton
        Schmitz - Fritz
        Schmitz - Heinz
        Schmitz - Xaver

        So würde ich dann auch unterschiedliche Werte unter einem eindeutigen Schlüssel ablegen, Beispiel:
        PHP-Code:
        <?php
        /*
        * Ein Array
        */
        $feed_object = array(array('02_article_picture''field' => 'text_head''description' => 'Headline'),
                   array(
        '02_article_picture''field' => 'text_foot''description' => 'Footline'),
                   array(
        '02_article_picture''field' => 'image_upload''description' => 'Image'),
                   array(
        '02_article_picture''field' => 'textarea_large''description' => 'Plain Text'),
                   array(
        '02_article_picture''field' => 'image_upload''description' => 'Icon'));
        ?>
        In der Vergleichsfunktion kannst du dann den Schlüssel definieren, nach dem sortiert wird:
        PHP-Code:
        <?php
        /*
        Benutzerdefinierte Sortier-Funktion
        */
        function cmp($a$b){
         
        $index='description';
         
        //$index='field';
         
        return (strcmp ($a[$index],$b[$index]));
        }
        /*
        * Ausgabe des Arrays
        */        
        echo "Ausgabe:<pre>";
        print_r($feed_object);
        echo 
        "</pre>";
        /*
        * Sortieren
        */
        uasort($feed_object,'cmp');
        /*
        * Ausgabe des sortierten Arrays
        */
        echo "Ausgabe nach uasort:<pre>";
        print_r($feed_object);
        echo 
        "</pre>";
        ?>
        Gruß
        Günni

        Kommentar

        Lädt...
        X