Nach Array-Sortierung einträge weg

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

  • #16
    Original geschrieben von Picard
    Und was mache ich wenn ein Name mehrfach vorkommt
    Genauso dumm schauen, wie vorher in dem Fall, dass die Zahl nicht eindeutig war ...?

    Also wie muss nun mein Array aussehen und wie muss ich sortieren ?
    Bau's zweidimensional auf, wie vorgeschlagen - und nutze dann usort.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      PHP-Code:
       ...
      function 
      compare $a$b ) {
         return ( 
      $a ] == $b ] ) ? : ( ( $a ] < $b ] ) ? -);
      }

      usort $array_namen'compare' ); 
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #18
        Also nochmal zum Verständnis:

        Array so aufbauen:

        PHP-Code:
        $namen = array
        (
            [
        0] => Array
                (
                    [
        0] => 3423
                    
        [1] => keine Ahung mehr
                
        )

            [
        1] => Array
                (
                    [
        0] => 1434
                    
        [1] => und noch weniger
                
        )
            [
        2] => Array
                (
                    [
        0] => 3423
                    
        [1] => und noch weniger
                
        )


        und so sortieren:

        PHP-Code:
        $namen usort($namencmp); 
        richtig ?

        EDIT:
        Inzwischen hat tontechniker wieder was gepostst und nun bin ich wieder irritiert ?!

        Kommentar


        • #19
          So wie ich es gerade gepostet habe ...
          EDIT:
          PHP-Code:
           $array_namen = array ( ... );
          function 
          compare $a$b ) {
             return ( 
          $a ] == $b ] ) ? : ( ( $a ] < $b ] ) ? -);
          }

          usort $array_namen'compare' );
          print_r $array_namen ); 
          Klick doch endlich mal auf die Manualseiten die gepostet werden.

          Zuletzt geändert von tontechniker; 01.05.2007, 15:22.
          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

          Kommentar


          • #20
            Original geschrieben von tontechniker
            So wie ich es gerade gepostet habe ...
            EDIT:
            PHP-Code:
             $array_namen = array ( ... );
            function 
            compare $a$b ) {
               return ( 
            $a ] == $b ] ) ? : ( ( $a ] < $b ] ) ? -);
            }

            usort $array_namen'compare' );
            print_r $array_namen ); 
            Klick doch endlich mal auf die Manualseiten die gepostet werden.

            Sorry wenn ich jetzt so blöde Frage, ... aber wie genau muss ich mir jetzt mein array bauen ? Bekomme es irgendwie nicht passend hin.

            gruß Picard

            Kommentar


            • #21
              die frage ist nicht blöd, sie wurde einfach schon mal beantwortet.

              Kommentar


              • #22
                PHP-Code:
                array ( array ( 1234'blubb' ), array ( 4321'bbulb' ) ); 
                Was bekommst du daran nicht passend hin?
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #23
                  Original geschrieben von tontechniker
                  PHP-Code:
                  array ( array ( 1234'blubb' ), array ( 4321'bbulb' ) ); 
                  Was bekommst du daran nicht passend hin?
                  Naja, ... habe es nun so gemacht wir du geschrieben hast und mein Array sieht nach dem print_r folgendermaen aus:

                  PHP-Code:
                  Array
                  (
                      [
                  0] => Array
                          (
                              [
                  0] => 4100
                              
                  [1] => Sowas von keine Ahnung
                          
                  )

                      [
                  1] => Array
                          (
                              [
                  0] => 9999
                              
                  [1] => ein weiterer Name
                          
                  )

                      [
                  2] => Array
                          (
                              [
                  0] => 7000
                              
                  [1] => Hier bin ich
                          
                  )

                      [
                  3] => Array
                          (
                              [
                  0] => 1
                              
                  [1] => Hallo Welt
                          
                  )

                  also nichts von sortierung erkennbar.

                  gruß Picard

                  Kommentar


                  • #24
                    fehlt nur noch die anweisung zum sortieren

                    Kommentar


                    • #25
                      Original geschrieben von penizillin
                      fehlt nur noch die anweisung zum sortieren
                      Sehr witzig, habe ja folgendes vor dem print_r() eingebaut:

                      function compare ( $a, $b ) {
                      return ( $a [ 1 ] == $b [ 1 ] ) ? 0 : ( ( $a [ 1 ] < $b [ 1 ] ) ? -1 : 1 );
                      }
                      usort ( $names, 'compare' );

                      EDIT:

                      Was hab ich denn nun falsch gemacht ?

                      Zuletzt geändert von Picard; 01.05.2007, 16:25.

                      Kommentar


                      • #26
                        wenn du nach dem namen vergleichst, brauchst du strcmp() statt "kleiner" oder "größer".

                        Kommentar


                        • #27
                          Original geschrieben von penizillin
                          wenn du nach dem namen vergleichst, brauchst du strcmp() statt "kleiner" oder "größer".
                          Ich brauch ja die Reihenfolge der Namen anhand der größe der Zahlen, sprich sortiert sähe das so aus:

                          Hallo = 1234
                          Apfel = 1548
                          Gammelfleisch = 2001

                          Also wo ist der Fehler ?

                          gruß Picard

                          Kommentar


                          • #28
                            Original geschrieben von Picard
                            Ich brauch ja die Reihenfolge der Namen anhand der größe der Zahlen [...]
                            Also wo ist der Fehler ?
                            Der Fehler ist, dass du die gepostete Vergleichsfunktion stupide übernommen hast, anstatt sie dir mal mit Verstand anzuschauen.

                            Sonst hättest du nämlich bemerkt, dass sie jeweils die zweiten Elemente zweiter Array-Einträge vergleicht - du willst aber die ersten vergleichen, also solltest du die Funktion dahingehend anpassen.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar

                            Lädt...
                            X