mehrdimensionales Array

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

  • #16
    Gut, so hatte ich das auch. Das Problem war nur die ganze Zeit, dass es in meinem Script nicht funktioniert.


    Damit passiert bei mir folgendes:

    PHP-Code:
    Array
    (
        [
    1] => Array
            (
                [
    vorname] => Ole Einer
                
    [nachname] => Björndalen
                
    [staerke] => 90
            
    )
        [
    2] => Array
            (
                [
    vorname] => Michael
                
    [nachname] => Greis
                
    [staerke] => 67.5
           

        [
    9] => Array
            (
                [
    vorname] => Sven
                
    [nachname] => Fischer
                
    [staerke] => 77.5
            
    )
    )

    array_multisort($staerkenSORT_DESC);

    Array
    (
        [
    0] => Array
            (
                [
    vorname] => Sven
                
    [nachname] => Fischer
                
    [staerke] => 77.5
            
    )
        [
    1] => Array
            (
                [
    vorname] => Ole Einer
                
    [nachname] => Björndalen
                
    [staerke] => 90
            
    )
        [
    2] => Array
            (
                [
    vorname] => Michael
                
    [nachname] => Greis
                
    [staerke] => 67.5
           



    Und die Staerken sind nicht sortiert

    Kommentar


    • #17
      Original geschrieben von Tarlar

      Und die Staerken sind nicht sortiert
      so wird es gehen

      PHP-Code:

      $staerken
      [0][staerke] = 90
      $staerken[0]['vorname'] = "Ole Einer"
      $staerken[0]['nachname'] = "Ole Einer"

      $staerken[1][staerke] = 67.5
      $staerken[1]['vorname'] = "Michael"
      $staerken[1]['nachname'] = "Greis"

      $staerken[2][staerke] = 77.5
      $staerken[2]['vorname'] = "Sven"
      $staerken[2]['nachname'] = "Fischer"

      array_multisort($staerken); 
      Ausgabe

      Code:
      Array
      (
          [0] => Array
              (
                  [staerke] => 67.5
                  [vorname] => Michael
                  [nachname] => Greis
              )
      
          [1] => Array
              (
                  [staerke] => 77.5
                  [vorname] => Sven
                  [nachname] => Fischer
              )
      
          [2] => Array
              (
                  [staerke] => 90
                  [vorname] => Ole Einer
                  [nachname] => Ole Einer
              )
      
      )

      Kommentar


      • #18
        also ein rekursiver Quicksort für mehrdimensionale Arrays hätte mein Auge jetzt mehr erfreut

        ist die Funktionsgleich mit der Variante aus PHP5 ?
        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
        - ...und solche Behauptungen in "falsches Resourcenmanagement"

        Kommentar


        • #19
          Original geschrieben von zerni
          also ein rekursiver Quicksort für mehrdimensionale Arrays hätte mein Auge jetzt mehr erfreut
          Also mich hätte jetzt der Hinweis auf usort() mehr erfreut - weil ich den an der Stelle für den einzig sinnvollen erachtet hätte ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #20
            Kannste bekommen...
            evtl ein wenig oversized...

            Ein Fragment aus meiner Wühlkiste:
            PHP-Code:
             class sorter  // stark gekürzt
            {
              var 
            $schluessel NULL// private
              
            var $direction  1;    // private

              
            function cmp_by_subkey($a,$b)
              {
                if (
            $a[$this->schluessel] == $b[$this->schluessel]) return 0;
                
            $richtung = ($a[$this->schluessel] < $b[$this->schluessel]) ? -1;
                return 
            $richtung $this->direction;
              }
              
              function 
            sort_by_sub_key(&$array,$key,$direction='ASC')
              {
                if(
            $direction == 'DESC'$this->direction = -1;
                  else  
            $this->direction =  1;
                
            $this->schluessel $key;
                
            usort($array,array(&$this,'cmp_by_subkey'));
              }
            }

            // testcode
            $sorter = & new sorter;
            $sorter->sort_by_sub_key($staerken,'staerke','DESC'); 
            Zuletzt geändert von combie; 22.01.2007, 11:35.
            Wir werden alle sterben

            Kommentar


            • #21
              Hi,

              hab gerade das selbe Problem.

              combie also dein Code-Schnipsel vernichtet vornen den Schlüssel sprich aus 1/2/9 wird 0/1/2...
              genau so wie multisort_array das vernichtet ebenfalls den Schlüssel und fängt wieder mit 0/1/2/3 an...

              Mein Array sieht so aus:
              PHP-Code:
              Array
              (
                  [
              5] => Array
                      (
                          [
              0] => 2
                      
              )

                  [
              16] => Array
                      (
                          [
              0] => 2
                      
              )

                  [
              17] => Array
                      (
                          [
              0] => 1
                      
              )

                  [
              26] => Array
                      (
                          [
              0] => 4
                      
              )

                  [
              28] => Array
                      (
                          [
              0] => 3
                      
              )

              soll folgendes werden:

              PHP-Code:
              Array
              (
                  [
              26] => Array
                      (
                          [
              0] => 4
                      
              )

                  [
              28] => Array
                      (
                          [
              0] => 3
                      
              )

                  [
              16] => Array
                      (
                          [
              0] => 2
                      
              )

                  [
              5] => Array
                      (
                          [
              0] => 2
                      
              )

                  [
              17] => Array
                      (
                          [
              0] => 1
                      
              )


              ist genau das gleiche problem
              Zuletzt geändert von TD.at; 27.02.2007, 14:27.
              lg Tom

              Kommentar


              • #22
                Original geschrieben von TD.at
                combie also dein Code-Schnipsel vernichtet vornen den Schlüssel sprich aus 1/2/9 wird 0/1/2...
                Natürlich - das ist definiertes Verhalten für usort.

                Hätte dir ja vielleicht auch selbst auffallen können, wenn du mal ein wenig im Manual nachgelesen hättest, anstatt fertige Schnippsel nur per Copy&Paste zu übernehmen, hm?


                Und Alternativen werden im Manual ebenfalls genannt.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X