Ankündigung

Einklappen
Keine Ankündigung bisher.

Array Sortierten

Einklappen

Neue Werbung 2019

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

  • Array Sortierten

    Hallo liebe php-freunde

    Dies ist mien erster Post hier, von dem her mal ein liebes hallo an alle!

    Vorweg ich lerne PHP selbstständig durch probieren und googeln was auch mehr oder weniger gut funktioniert. Jedoch bei arrays komme ich mit meiner googlerei nicht mehr weiter...


    Also gut hier nun mein Problem:

    Ich habe ein"mehrdimensionales" array:

    PHP-Code:
    $l = array(
      array(
    "1","laden-groß","54","29","3"),
      array(
    "2","laden-klein","50","30""2"),
    ); 
    Dies soll eine Bauteillsite darstellen: Position / Bezeichnung / Länge / Breite / Stück.

    In wirklichkeit ist die liste natürlich länger mit verschiedenen Maßen. Ich möchte nun die "inneren arrays" nach der Breite absteigend sortieren.

    In meinem Beispiel ist die breite der position 2 größer wesshalb die neue reihenfolge mit Pos 2 beginnt.

    Ich hoffe ihr versteht was ich euch fragen will. Kann mir hier bitte jemand weiterhelfen?

    Liebe Grüße


    EDIT:

    VL zur besseren verdeutlichung:

    vorher:
    $l[0][3] = 29
    $l[0][3] = 30

    nach der sortierung:
    $l[0][3] = 30
    $l[0][3] = 29


  • #2
    Stichwort array_multisort
    http://php.net/manual/de/function.array-multisort.php

    Kommentar


    • #3
      Wow vielen dank für deine schnelle Hilfe!
      Werd ich mir gleich mal ansehen.

      Kommentar


      • #4
        Für deinen speziellen Fall dürfte insbesondere der Teil mit den "Büchern" also "Band" und "Auflage" relativ weit unten interessant sein.

        Kommentar


        • #5
          Sortieren von mehrdimensionalen Arrays !

          + Array sortieren
          PHP-Klassen auf github

          Kommentar


          • #6
            Wow das es so einfach ist hätte ich echt nicht gedacht...

            Habs hinbekommen, mein Problem ist somit gelöst.
            Vielen vielen dank, klasse forum hier

            rein fürs verständniss, mein code sieht jetzt so aus:

            PHP-Code:
            $l = array(
                array(
                    
            'pos' => 1,
                    
            'bezeichnung' => 'laden-groß',
                    
            'länge' => '54',
                    
            'breite' => '29',
                    
            'dicke' => '19',
                    
            'stück' => '3',
                    
            'status' => '0',
                ),
                array(
                    
            'pos' => 2,
                    
            'bezeichnung' => 'laden-klein',
                    
            'länge' => '50',
                    
            'breite' => '30',
                    
            'dicke' => '19',
                    
            'stück' => '2',
                    
            'status' => '0',
                )
            );

            array_multisort(
                
            array_column($l,'breite'), SORT_DESC
                
            $l
            ); 
            funktioniert das auch mit:
            PHP-Code:
            $l = array(
              array(
            "1","laden-groß","54","29","3"),
              array(
            "2","laden-klein","50","30""2"),
            ); 
            also zB:
            PHP-Code:
            array_multisort(
                
            array_column($l,[3]), SORT_DESC
                
            $l
            ); 
            funktioniert nicht ?

            Kommentar


            • #7
              Die [3] als Parameter sollte minimal eine Warnung werfen, denn hier wird kein array erwartet sondern ein Schlüssel. In dem Fall ein numerischer:
              PHP-Code:
              //'neumodische' Arraydefinition
              $componentList = [
                [
              "1","laden-groß","54","29","3"],
                [
              "2","laden-klein","50","30""2"],
              ];

              array_multisort(
                  
              array_column($componentList,3), SORT_DESC
                  
              $componentList
              ); 
              Als Kurzfassung: ohne die eckige Klammer funktioniert dies auch mit numerischen Arrays.

              LG jspit

              ps. Lange keine so gute Problembeschreibung im ersten Thread gesehen.
              Insbesondere Beispieldaten, die ohne Umstände zum Testen kopiert werden können.
              PHP-Klassen auf github

              Kommentar


              • #8
                och mensch ja ist ja logisch

                Eine frage hab ich doch noch dazu! Falls ihr euch fragt was das überhaupt werden soll => Eine zuschnitt optimierung mit möglichst wenig verschnitt.

                Sicher nicht einfach aber wenn ichs per hand kann muss das doch auch zu programieren sein *gg*

                Okay was ich jetzt noch brauche wäre eine sortierung die auch die länge berücksichtigt. Genauergesagt wenn mehrere Bauteile die gleiche breite haben, soll auch die länge berücksichtigt werden (absteigend).

                hier testweise meine "liste".
                http://www.gratzl-online.com/projekt...hnitt/test.php

                Kommentar


                • #9
                  Um mich mal auf den Code von jspit zu beziehen mit:
                  PHP-Code:
                  array_multisort(
                      
                  array_column($componentList,3), SORT_DESC,array_column($componentList,2), SORT_DESC
                      
                  $componentList
                  ); 
                  sollte es eigentlich funktionieren.

                  Kommentar


                  • #10
                    Wunderbar es funktioniert!

                    Nochmal vielen Dank an alle.

                    Kommentar

                    Lädt...
                    X