Schleife muhaaa

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

  • Schleife muhaaa

    Hey,
    dieses kleine Codeschnippselchen ist voll seltsam.
    In der 2 For(); kommt beim Schleifendurchlauf $j 2 mal der Wert 7 vor.....
    Hab aber bisher leider noch nicht rausfinden kommen warum das so ist....

    PHP-Code:
    $menu['1']['ranks']['0']['desc']="News-Games:";
    $menu['1']['ranks']['0']['value']=1;

    $menu['1']['ranks']['1']['desc']="News-Software:";
    $menu['1']['ranks']['1']['value']=0;

    $menu['1']['ranks']['2']['desc']="News-Technik:";
    $menu['1']['ranks']['2']['value']=1;

    $menu['1']['ranks']['3']['desc']="Links-Wissen:";
    $menu['1']['ranks']['3']['value']=0;

    $menu['1']['ranks']['4']['desc']="Links-Games:";
    $menu['1']['ranks']['4']['value']=1;

    $menu['1']['ranks']['5']['desc']="Links-Fun:";
    $menu['1']['ranks']['5']['value']=0;

    $menu['1']['ranks']['6']['desc']="Lexikon:";
    $menu['1']['ranks']['6']['value']=1;

    $menu['1']['ranks']['7']['desc']="Archiv:";
    $menu['1']['ranks']['7']['value']=0;

    $menu['1']['ranks']['8']['desc']="Book:";
    $menu['1']['ranks']['8']['value']=1;

    $menu['1']['ranks']['9']['desc']="Screen:";
    $menu['1']['ranks']['9']['value']=0;

    $menu['1']['ranks']['10']['desc']="ICQ";
    $menu['1']['ranks']['10']['value']=1;

    echo 
    '<table>';
      
    $elemente=count($menu[$_GET['user']]['ranks'])-1;
      for ( 
    $i=0$i <= $elemente$i++) {
       
    //$modulo=$i%4;
       //echo '<span class="text"><br><br><br>'.$i.' der Modulowert '.$modulo;
        
    if ( $i%== ) echo "<tr align='center'>\n<td class='text'>".$menu[$_GET['user']]['ranks'][$i]['desc']."</td>\n";
        else echo 
    "<td class='text'>".$menu[$_GET['user']]['ranks'][$i]['desc']."</td>\n";
        if ( 
    $i%== || $i == $elemente) { 
          echo 
    "</tr>\n";
          for ( 
    $j=$i-3$j <= $i$j++) {
            if ( 
    $j%== ) {
                echo 
    "<tr align='center'>\n<td class='text'>".$menu[$_GET['user']]['ranks'][$j]['value']."</td>\n"; }
            else echo 
    "<td class='text'>".$menu[$_GET['user']]['ranks'][$j]['value']."</td>\n";
            if ( 
    $j%== || $i == $j) echo "</tr>\n";
            echo 
    $j;
          } 
    // 2.FOR();
        
    // IF Bedingung
      
    // 1.FOR();
      
    echo '</table>';

    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

  • #2
    ganz einfach:
    if($i%4 == 3 || $i == $elemente)
    bei 3, 7 und 10 ist die Bedingung erfüllt
    for ($j=$i-3;$j<=$i;$j++){
    ...
    echo $j;
    }

    bei 3:
    von 0-3
    bei 7
    von 4 - 7
    bei 10
    von 7 - 10

    klar???
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      achja das liegt daran, dass Du || == $elemente benutzt denn wenn der Wert von $elemente nicht durch deine 4 teilbar ist wirst Du immer dieses Problem haben, immer an anderer Stelle...
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        ne mir ist gerade nicht klar was du mir sagen möchtest.....

        Jedenfalls erhalte ich so ne Ausgabe für $j:

        0
        1
        2
        3
        4
        5
        6
        7
        7
        8
        9
        10

        Und mir geht es in erster Linie um das fett markierte
        Denn diese Ausgabe schrottet gewissermaßen meine Tabelle und das kann ich mir net erklären.
        Deine Aufzählung ist korrekt so sollte es auch sein... @mellopie

        EDIT:
        Stell dir 4 Items in einem tr vor, sofern das Array nicht genau durch 4 aufgeht muss am Ende des letzten Array Elementes der /tr Tag gesetzt werden sonst sieht es im HTML Code nicht akzeptabel aus....

        Zuletzt geändert von Payne_of_Death; 28.12.2003, 16:00.
        [color=blue]MfG Payne_of_Death[/color]

        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
        [color=red]Merke:[/color]
        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

        Murphy`s Importanst LAWS
        Jede Lösung bringt nur neue Probleme
        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

        Kommentar


        • #5
          Lies mal genau meine erste Antwort.

          Ausgabe:
          bei 3:
          von 0-3
          bei 7
          von 4 - 7
          bei 10
          von 7 - 10
          Fällt Dir jetzt auf warum die 7 doppelt kommt???
          Weil Dein Array nur 10 einträge hat. 10-3=7 und dann ausgabe von 7 bis
          10
          Na wird Licht????
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            lol

            genau und wo würdest du geschwind da was ändern....
            [color=blue]MfG Payne_of_Death[/color]

            [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
            [color=red]Merke:[/color]
            [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

            Murphy`s Importanst LAWS
            Jede Lösung bringt nur neue Probleme
            Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
            In jedem kleinen Problem steckt ein großes, das gern raus moechte.

            Kommentar


            • #7
              mach mal 12 Einträge in Dein array dann bekommst Du die 9-11 doppelt ausgegeben
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                hier if ( $i%4 == 3 || $i == $elemente) {
                muss || $i == $elemente weg und gesondert betrachtet werden dann funzt es sicher
                will sagen || $i == $elemente ganz am Schluss machen...
                und dann nur um die Tabelle zu schliessen
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  ach mal so am rande Dein coding style is zum k...
                  völlig uneinheitlich
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Original geschrieben von MelloPie
                    will sagen || $i == $elemente ganz am Schluss machen...
                    und dann nur um die Tabelle zu schliessen
                    ehm kann es sein das du was miss verstehst????oder ich

                    Ich im Grunde durch die 2 Schleifen 2 paraellele tr Reihen
                    eine mit den Beschreibungen und eine mit den Werten

                    Und sofern in der ersten Schleife das array keine 4 Elemente mehr liefern kann muss der tr Tag zu gemacht werden.

                    Zwischen der ersten For(); agiert sinngemäß immer die zweite.....

                    Das Code unheitlich und beschissen ist weiss ich, bin selber net so wirklich damit zufrieden...Gegen Kritiken hab ich nichts.....
                    [color=blue]MfG Payne_of_Death[/color]

                    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                    [color=red]Merke:[/color]
                    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                    Murphy`s Importanst LAWS
                    Jede Lösung bringt nur neue Probleme
                    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                    Kommentar


                    • #11
                      du verstehst was mis.
                      will sagen || $i == $elemente ganz am Schluss machen...
                      und dann nur Dein </tr> machen wenn erforderlich....
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        ja aber......

                        du berufst dich immer auf die erste Schleife???
                        Und diese passt von Anfang bis Ende......

                        Schleife 1:
                        <tr>
                        <td>
                        <td>
                        <td>
                        <td>
                        </tr>

                        Schleife 2:
                        <tr>
                        <td>
                        <td>
                        <td>
                        <td>
                        </tr>

                        Schleife 1:
                        <tr>
                        <td>
                        <td>
                        <td>
                        <td>
                        </tr>

                        Wenn ich diese Bedingung aus der Schleife 1 entferne dann wird das tr Tag bei nicht aufgehenden Array Elementen nicht mit ausgegeben....inder ersten Schleife.......

                        Und wenn ich dich richtig verstehe dann meinst du sowas......

                        Schleife 1:
                        <tr>
                        <td>
                        <td>
                        <td>
                        <td>

                        Schleife 2:
                        <td>
                        <td>
                        <td>
                        <td>
                        </tr>
                        [color=blue]MfG Payne_of_Death[/color]

                        [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                        [color=red]Merke:[/color]
                        [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                        Murphy`s Importanst LAWS
                        Jede Lösung bringt nur neue Probleme
                        Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                        In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                        Kommentar


                        • #13
                          nein alles bleibt wie es is nur das || $i == $elemente kommt am schluss in verbindung mit $i%4 != 0 und echo </tr> und dann sollte es gehen man denk doch mal bissi nach :-)
                          Beantworte nie Threads mit mehr als 15 followups...
                          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                          Kommentar


                          • #14
                            neuer vorschlag zu Güte:
                            PHP-Code:
                            $elemente=count($menu[$_GET['user']]['ranks']);
                            while (
                            $elemente 4){
                              
                            $menu['1']['ranks'][$elemente]['desc']="& nbsp;";
                              
                            $menu['1']['ranks'][$elemente]['value']="& nbsp;";
                              
                            $elemente++;
                            }

                            echo 
                            "<table>\n";
                            for ( 
                            $i=3$i <= $elemente$i $i 4) {
                              echo 
                            "<tr align='center'>\n";
                              for ( 
                            $j=$i -3$j <= $i$j++) {
                                echo 
                            "<td class='text'>".$menu[$_GET['user']]['ranks'][$j]['desc']."</td>\n";
                              }
                              echo 
                            "</tr>\n";
                              echo 
                            "<tr align='center'>\n";
                              for ( 
                            $j=$i -3$j <= $i$j++) {
                                echo 
                            "<td class='text'>".$menu[$_GET['user']]['ranks'][$j]['value']."</td>\n";
                              }
                              echo 
                            "</tr>\n";
                            }
                              echo 
                            "</table>\n"
                            Offe

                            Kommentar


                            • #15
                              zeit das ich aufhöre ganz nebenbei.......

                              du willst in der 2. Schleife in dieser Zeile ansetzen:

                              PHP-Code:
                              if ( $j%== || $i == $j) echo "</tr>\n"
                              was mir aber gerade grübeln lässt dank dieser doofen [0]
                              ist....
                              Ausgabe:
                              bei 3:
                              von 0-3
                              bei 7
                              von 4 - 7
                              bei 10
                              von 7 - 10

                              ich mach immer
                              als Startwert:

                              PHP-Code:
                              for ( $j=$i-3$j <= $i$j++) { 
                              ich ist schon mal beim dritten Durchlauf die -3 falsch
                              1.) 3-3=0 0 -> 3
                              2.) 7-3=4 4 -> 7
                              3.) 10-3=7 -> 10

                              Würde ich beim 3 Durchlauf -2 machen würde alles passen
                              [color=blue]MfG Payne_of_Death[/color]

                              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                              [color=red]Merke:[/color]
                              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                              Murphy`s Importanst LAWS
                              Jede Lösung bringt nur neue Probleme
                              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                              Kommentar

                              Lädt...
                              X