Array mit dynamischen Umbrüchen ausgeben

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

  • Array mit dynamischen Umbrüchen ausgeben

    Ich hab hier ein array, das jedesmal unterschiedliche viele Werte hat.
    Bei der Ausgabe soll nach jedem Wert ein Komma erscheinen und nach dem letzten nicht:
    PHP-Code:
    for($x=0;$x<(count($array1)-1);$x++){
    echo 
    $array1[$x].",&nbsp;";
    }
    echo 
    end($array1); 
    Wie kann ich jetzt möglichst einfach Zeilenumbrüche abhängig von der Anzahl der Werte ausgeben lassen?
    Damit das einigermaßen aussieht soll aber jede Zeile max. 4 Elemente aber mehr als 2 enthalten.
    D.h.:
    Anzahl Werte = 1. Zeile / 2. Zeile / 3. Zeile / 4. Zeile
    5 = 3 / 2
    6 = 3 / 3
    7 = 4 / 3
    8 = 4 / 4
    9 = 3 / 3 / 3
    10 = 4 / 3 / 3
    11 = 4 / 4 / 3
    12 = 4 / 4 / 4
    13 = 4 / 3 / 3 / 3
    14 = 4 / 4 / 3 / 3
    15 = 4 / 4 / 4 / 3
    16 = 4 / 4 / 4 / 4
    etc.

    Ich würde mich eher als php-Neuling ansehen und weiß an dieser Stelle echt nicht mehr weiter.

    Im voraus vielen Dank!

  • #2
    PHP-Code:
    //for($x=0;$x<(count($array1)-1);$x++){
    echo implode(",&nbsp;",$array1);
    //}
    //echo end($array1); 
    so zum beispiel.
    Kissolino.com

    Kommentar


    • #3
      Schön. Damit kann ich die Komma-Geschichte vereinfachen. Danke.
      Die Frage bezog sich aber auf den ganzen Text unterhalb meines Codes.
      Kann sich dazu vielleicht jemand äußern?
      Zuletzt geändert von futtlui; 23.10.2003, 19:19.

      Kommentar


      • #4
        ... hab ich wohl nicht ganz gelesen ...

        gegenfrage(n):
        [ ] sprechen wir von einem array, dass mal 2, 3, 4 oder x werte hat?
        [ ] sprechen wir von einem mehrdimensionalen array mit einer untersch. anzahl array-elemente?
        [ ] sprechen wir von einer unbestimmten anzahl arrays mit unterschiedlichen inhalten?
        ^^ zutreffendes markieren

        - poste bitte mal 1-2 beispiele deine(s/r ) arrays
        Kissolino.com

        Kommentar


        • #5
          [X] wir sprechen von einem array, dass mal 2, 3, 4 oder x werte hat?
          genauer gesagt sind es min. 3 bis max. 14 Elemente in einem numerischen Array, dessen Werte aus einer Datenbank stammen.

          Kommentar


          • #6
            ... so jetzt hab ichs auch verstanden:

            du willst die array-inhalte unterschiedlich verteilen in abhängigkeit
            a) zur anzahl
            b) deiner wunschverteilung

            dann:
            - mach dir ein hilfsarray, das die verteilung aufnimmt und als key zahlen von 3- 14 hat:
            array(3 => "3",4 => "4",5 => "3/2",...)
            - du weisst, wieviel werte in der db-ausgabe stehen
            - anhand des wertes holst du die "verteilung" aus dem hilfsarray
            - mit explode() hast du die anzahl der durchläufe (=zeilen) sowie die verteilung der werte/zeile
            - mit 2 verschachtelten for-schleifen bekommst du die gewünschte ausgabe
            Kissolino.com

            Kommentar


            • #7
              erstmal vielen Dank Wurzel!
              Das haut bestimmt hin, wenn man genau weiß wie.
              Ich bin jetzt vorerst mal soweit:
              PHP-Code:
              $zeilen = array(3=>"3",4=>"4",5=>"3/2",6=>"3/3",7=>"4/3",8=>"4/4",9=>"3/3/3",10=>"4/3/3",11=>"4/4/3",12=>"4/4/4",13=>"4/3/3/3",14=>"4/4/3/3");

              $verteilung explode("/",$zeilen[count($daten)]);

              for(
              $x=0;$x<$verteilung[0];$x++){
              echo 
              $daten[$x];

              Ich hab jetzt aber bezüglicher verschachtelter for absolut keinen Plan.
              Ich weiß auch nicht, ob ich mit o.g. code richtig liege...
              Und wo mach ich den Umbruch hin?
              Könntest Du mir dabei vielleicht nochmal behilflich sein?

              Kommentar


              • #8
                du könntest dir auch mal array_chunk anschauen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  na, der anfang ist doch schon recht vielversprechend

                  so gehts dann weiter:
                  PHP-Code:
                  $daten = array(1,2,3,4,5,6,7,8,9,10);
                  // ^^ die ergebnisse aus der datenbank
                  $zeilen = array(
                             
                  => "3",
                             
                  => "4",
                             
                  => "3/2",
                             
                  => "3/3",
                             
                  => "4/3",
                             
                  => "4/4",
                             
                  => "3/3/3",
                             
                  10 => "4/3/3");  // unser "hilfsarray"


                  $verteilung explode("/",$zeilen[count($daten)]);  // hole die verteilung
                  $anzahl_z count($verteilung);                       // wir ermitteln die durchläufe

                  $k=0;
                  for(
                  $i=0$i $anzahl_z ;$i++)                    // durchläufe der zeilen
                  {
                     
                  $anzahl_e $verteilung[$i]+$k;
                     for(
                  $z=$k;$z<$anzahl_e;$z++)                    // durchläufe der werte pro zeile
                     
                  {
                       
                  $ausgabe .= $daten[$z]."...";
                       
                  $k++;
                     }
                     
                  $ausgabe .= "<br>";
                     
                  $k--;
                  }
                  echo 
                  $ausgabe
                  ... und dann sollte es passen
                  Kissolino.com

                  Kommentar


                  • #10
                    1000 Dank!
                    Es funktioniert und ich versteh langsam sogar auch wie

                    Nur das k--; muß man weglassen, sonst wird das letzte Element einer Zeile in der nächsten nochmal angezeigt.

                    Kommentar


                    • #11
                      stimmt ... war wohl ein bisschen eilig
                      Kissolino.com

                      Kommentar


                      • #12
                        Ich habe zu diesem Thema uch noch eine kleine Frage. Ich gebe in einer While-Schleife Daten aus einer Tabelle aus.
                        Nun sollte aber, wenn alle Daten der gleichen Kategorie ('cat') ausgelesen sind, ein <br> gesetzt werden. Was gibt es da für möglichkeiten?

                        PHP-Code:
                        $sql ="SELECT id,titel,fot FROM menu_test ORDER BY cat, no";
                        $res mysql_query($sql$db) or die(mysql_error());
                        while (list(
                        $id,$titel,$fot) = mysql_fetch_row($res))        
                        {
                        if (
                        $fot==1)
                        {  
                             echo 
                        "<a href='' title='$titel'><b>$titel</b></a><br>" ;
                               } else {

                             echo 
                        "• <a style='padding-left: 10px' href='' title='$titel'>$titel</a><br>";
                              
                        }

                        Vielen Dank

                        Kommentar


                        • #13
                          1. du solltest "cat" in der query schon mit auslesen
                          2. in der while-schleife definierst du eine bedingung
                          und vergleichst, ob "alte-cat" != "aktuelle cat" ist => <br> & aktuelle cat in einer hilfvariablen speichern
                          Kissolino.com

                          Kommentar


                          • #14
                            Hmm, ich versteh das ja schon, aber wie mache ich so einen Vergleich, dass es fortlaufend ist?

                            Kannst Du mir da ein beispiel geben?

                            Danke

                            Kommentar


                            • #15
                              Original geschrieben von figugegu
                              Hmm, ich versteh das ja schon, aber wie mache ich so einen Vergleich, dass es fortlaufend ist?

                              Kannst Du mir da ein beispiel geben?
                              bitte suche nach "gruppenwechsel" hier im forum - das haben wir schon x-mal erklärt.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X