Ankündigung

Einklappen
Keine Ankündigung bisher.

Gruppenbruch (Standardverfahren)

Einklappen

Neue Werbung 2019

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

  • Gruppenbruch (Standardverfahren)

    Diskussionsbeitrag zum Wiki Eintrag: Gruppenbruch (Standardverfahren).

    Die Diskussionsplattform des PHP.de Wiki wurde ins Forum integriert. Durch Klicken des Buttons "Antwort" kannst du an diesem Thema teilnehmen.

  • #2
    Gruppenbruch (Standardverfahren)

    Mir ist der Ausdruck Gruppenwechsel geläufiger, welcher ja im Wiki ebenfalls genannt wird. Vielleicht kann man den in diesen Threadtitel mit einbauen.

    Im Array-Beispiel ist die Variable $last_character unglücklich gewählt. Gemeint ist ja nicht der letzte Buchstabe, sondern der letzte Anfangsbuchstabe.

    Das, was ich eigentlich erwartet habe vorzufinden (SELECT ... GROUP BY ... ORDER BY ...) fehlt vollkommen.

    Kommentar


    • #3
      ich finds gut gemacht.
      Ein Hinweis auf usort bei der Arraylösung wär vielleicht noch angebracht.

      Kommentar


      • #4
        Danke für den Hinweis. Baue ich mal ein.

        Kommentar


        • #5
          So, ich habe den Thread mal kopiert, sodass er eine andere ID bekommen hat. Hoffentlich hört die Spamwelle für diesen Thread damit auf. Den alten Thread habe ich geschlossen und gelöscht.

          Kommentar


          • #6
            das hier ist auch falsch:
            PHP-Code:
            // Elemente durchlaufen
            foreach ($array as $entry) {
                
            $character $entry[0];
             
                
            // Gruppenbruch, neuer Anfangsbuchstabe
                
            if ($last_character != $character) {
                    echo 
            'Buchstabe: ' $character '<br />';
                }
                echo 
            '  ' $entry '<br />';
             
                
            // neuen Vergleichswert setzen
                
            $last_character $character;
                } 
            müßte wohl so sein:
            PHP-Code:
            $last_character '';

            foreach (
            $array as $entry) {
             
                
            // Gruppenbruch, neuer Anfangsbuchstabe
                
            if ($last_character != $entry[0]) {
                    echo 
            'Buchstabe: ' $entry[0] . '<br />';
                    
            // neuen Vergleichswert setzen
                   
            $last_character $entry[0]; // !!! an dieser Stelle und nicht außerhalb der if-Abfrage
                
            }
                echo 
            '  ' $entry '<br />';
              

            Kommentar


            • #7
              Naja, es funktioniert beides. Ist allenfalls ne Performancefrage.

              Kommentar


              • #8
                Soll ich sowas in den Artikel hinzufügen? Also nicht genau dieses Beispiel, nur die Methode. Ich halte sie für extrem elegant und hilfreich (und wenig bekannt).

                PHP-Code:
                <?php

                $a 
                = array (
                    array(
                'date' => '2009-06-11''title' => 'Alf'),
                    array(
                'date' => '2009-06-11''title' => 'Bibi Blocksberg'),
                    array(
                'date' => '2010-07-02''title' => 'Bibo'),
                    array(
                'date' => '2010-07-02''title' => 'Biene Maja'),
                    array(
                'date' => '2010-03-28''title' => 'Peter Pan'),
                    array(
                'date' => '2010-02-15''title' => 'Urmel aus dem Eis'),
                );

                // Nach Datum sortieren
                usort($a, function($v$w) {
                    return 
                strcmp($w['date'], $v['date']);
                });

                // Nach Jahr, Monat und Tag gruppieren
                $new array_reduce($a, function($newArray$tmp) {
                    list(
                $y$m$d) = sscanf($tmp['date'], '%d-%d-%d');
                    
                $newArray[$y][$m][$d][] = $tmp['title'];
                    return 
                $newArray;
                }, array());

                print_r($new);

                Kommentar


                • #9
                  Aufgrund von Verständnisproblemen überarbeite ich den Artikel in naher Zukunft. Habe bereits einen Vorschlag, werde ihn diese Woche fertig schreiben (sind schon 7 Seiten, seeehr ausführlich) und euch vorlegen. Wers dann nicht kapiert hat sich vielleicht doch den falschen Beruf ausgesucht.

                  Kommentar


                  • #10
                    Cool, wir sind gespannt.

                    Kommentar


                    • #11
                      Kann die Datei nicht anhängen da *.docx, bzw. *.doc > 19,5 KB. Kann man die Werte irgendwie anpassen? Hier den Text reinposten ist unübersichtlich

                      Kommentar


                      • #12
                        Mach ne RTF-Datei draus, sollte kleiner sein. Ansonsten schreib's doch direkt ins Wiki. Im Notfall stellen wir eine alte Version wieder her.

                        Kommentar


                        • #13
                          Ne, ist 3x so groß wie die DOCX, Plaintext isses schon 11 KB Egal, is auch noch nicht spruchreif und wenn möchte ich euch gegenlesen lassen, da der Ansatz nicht unbedingt wissenschaftlich / professionell ist, sondern für Anfänger einfach verständlich sein soll.

                          Kommentar


                          • #14
                            Gut, stimmt, ist immerhin Plain-Text, Doc is Binärformat.
                            Dann lade es auf einen FTP. Wenn du keinen hast, richte ich dir bei mir temporär einen Account ein.

                            Kommentar


                            • #15
                              Na hoffentlich traut sich ein Noob überhaupt an einen so umfangreichen Artikel heran.

                              Kommentar

                              Lädt...
                              X