Ankündigung

Einklappen
Keine Ankündigung bisher.

Multiarray speziel sortieren...

Einklappen

Neue Werbung 2019

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

  • Multiarray speziel sortieren...

    Hi

    /*
    in der Suche konnte ich nichts wirklich passendes finden
    */

    Also das array sieht in etwa so aus:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    0] => "string"
                
    [1] => integer
                
    [2] => integer
                
    [3] => 1
                
    [4] => integer
            
    )

        [
    1] => Array
            (
                [
    0] => "string"
                
    [1] => integer
                
    [2] => integer
                
    [3] => 3
                
    [4] => integer
            
    )

    So und dieses Array möchte ich sortieren. Ich kanns nur schwer beschreiben wie ich es haben will.
    Es soll das erste Level des Array sortiert werden, aber im Bezug zum zweiten Level auf das
    dritte Element. (Versteht man das????)

    Hab es mit multisort versucht, aber ich kriegs nicht ganz hin...

    Bitte um Hilfe!

    Gruß
    bigJay


  • #2
    Versteht man das???
    Nicht wirklich

    Aber evtl. hilft dir usort() weiter.

    Kommentar


    • #3
      na ja da gäbe es noch
      sort()
      arsort()
      asort()

      nicht vergessen Beipsiele im Manual auch zu beachten ..

      und noch ein paar weitere, da ich nicht ganz verstehe wie du es sortieren möchte kann ich dir ned wirklich weiterhelfen..
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        OK, danke für die raschen Antworten.

        aus dem array oben sollte sowas werden (wenn man es abwärts sortiert):
        PHP-Code:
        <?php
        Array 

            [
        0] => Array 
                ( 
                    [
        0] => "string" 
                    
        [1] => integer 
                    
        [2] => integer 
                    
        [3] => 
                    
        [4] => integer 
                


            [
        1] => Array 
                ( 
                    [
        0] => "string" 
                    
        [1] => integer 
                    
        [2] => integer 
                    
        [3] => 1
                    
        [4] => integer 
                



        ?>
        also bleiben die KEYS vom ersten Level erhalten, aber der Inhalt ändert sich. Und zum sortieren soll in diesem fall der KEY 3 im 2 Level verwendet
        werden ($array[level1][3]). Ich hofe das war jetzt verstänlicher.

        Echt, schlag mich tot, aber ich komm gar nicht klar mit den Erklärungen im Handbuch. Hab die ganzen funktionen schon angeschaut gehabt.

        Vieleicht jemand ein paar Beispielcodezeilen???

        Gruß
        bigJay

        Kommentar


        • #5
          Nimm dafür am besten usort() oder array_multisort().

          Beispiel für usort():
          PHP-Code:
          <?php
              
          function Compare($a$b)
              {
                  if(
          $a[3] == $b[3])
                      return 
          0;
                  else if(
          $a[3] > $b[3])
                      return 
          1;
                  else if(
          $a[3] < $b[3])
                      return -
          1;
              }

              
          usort($array'Compare');
          ?>

          Kommentar


          • #6
            So ?

            PHP-Code:
            <?php

            function sortm($data){
                
            $sortArray = array();
                foreach(
            $data as $key => $elem) {
                    
            $sortArray[$key] = $elem[3];
            }

                
            array_multisort($sortArraySORT_DESCSORT_NUMERIC$data);
                return 
            $data;
            }



            ?>

            Kommentar


            • #7
              Da fehlt dann aber noch ein $sortArray = sortm($data);.

              Kommentar


              • #8
                Code:
                function compareObjects($obj1, $obj2)
                {
                    // in deinem Fall zwei 1-dimensionale Arrays
                    echo "\ncompareObjects(".$obj1[2].", ".$obj2[2].")";
                    if($obj1[2] == $obj2[2])
                    	return 0;
                    return $obj1[2] > $obj2[2] ? -1 : 1;
                }
                
                function sortArray($obj)
                {
                	usort($obj, "compareObjects");
                	return $obj;
                }
                
                $sortiertesArray = sortArray($deinArray);

                Kommentar


                • #9
                  Danke! Danke! Danke!

                  Na was ist den heute los??? Heute sind ja alle so hilfsbereit! Und es kommen dazu auch noch so brauchbare Antworten. Ist nicht Alltag bei phpfriend.de

                  Hab bis jetzt den Vorschlag von xabbuh ausprobiert und es geht.
                  Werde jetzt noch die restlichen ausprobieren.

                  Ich danke euch allen nochmal!

                  Gruß
                  bigJay

                  Kommentar


                  • #10
                    Zitat von -->bigJay<--
                    Danke! Danke! Danke!

                    Na was ist den heute los??? Heute sind ja alle so hilfsbereit! Und es kommen dazu auch noch so brauchbare Antworten. Ist nicht Alltag bei phpfriend.de

                    Hab bis jetzt den Vorschlag von xabbuh ausprobiert und es geht.
                    Werde jetzt noch die restlichen ausprobieren.

                    Ich danke euch allen nochmal!

                    Gruß
                    bigJay
                    und so viel codeschnipsel! :staun:

                    ist aber ned in allen topics so :P
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      Hey, das hier ist kein Beschwerdeforum :wink:

                      Kommentar


                      • #12

                        Kommentar

                        Lädt...
                        X