Array mit dynamischen Umbrüchen ausgeben

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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?
      Last edited by futtlui; 23-10-2003, 19:19.

      Comment


      • #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

        Comment


        • #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.

          Comment


          • #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

            Comment


            • #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?

              Comment


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

                Comment


                • #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

                  Comment


                  • #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.

                    Comment


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

                      Comment


                      • #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

                        Comment


                        • #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

                          Comment


                          • #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

                            Comment


                            • #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.

                              Comment

                              Working...
                              X