Brauche Hilfe beim Endlosdurchlauf innerhalb eines Arrays

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

  • Brauche Hilfe beim Endlosdurchlauf innerhalb eines Arrays

    Hallo!

    Sagen wir mal, ich habe die Zahlen 0-9 als Array Index:

    $arr[0] = 'wert';
    $arr[1] = 'wert';
    $arr[2] = 'wert';
    $arr[3] = 'wert';
    $arr[4] = 'wert';
    $arr[5] = 'wert';
    $arr[6] = 'wert';
    $arr[7] = 'wert';
    $arr[8] = 'wert';
    $arr[9] = 'wert';

    Nun lasse ich mir zwei Zahlen zufällig generieren, von denen die erste der Start, und die Zweite die Schrittzahl sein soll. Dabei kommt z.b. 7 und 5 raus, sprich das Script soll bei $arr[7] loslaufen und 5 schritte nach vorne gehen:

    $arr[8] = Schritt 1
    $arr[9] = Schritt 2
    $arr[10] = Schritt 3 (Index existiert nicht)
    $arr[11] = Schritt 4 (Index existiert nicht)
    $arr[12] = Schritt 5 (Index existiert nicht)

    Hier kommt nun das Problem, dass nach 9 kein Index mehr existiert. Also soll das Script vorne wieder anfangen:

    $arr[8] = Schritt 1
    $arr[9] = Schritt 2
    $arr[0] = Schritt 3
    $arr[1] = Schritt 4
    $arr[2] = Schritt 5

    Das soll sowohl vor als auch zurück funktionieren. Wie kriege ich das nun bewerkstelligt?

    Danke schonmal

  • #2
    wie würdest du es denn mathematisch lösen?
    Die Milch bleibt ranzig!

    Kommentar


    • #3
      Das ist eben das Problem! Ich komm partout nicht auf die Lösung (wahrscheinlich weils zu einfach ist)...

      Kommentar


      • #4
        PHP-Code:
        $start=7;
        $steps=5;

        for (
        $i 0$i $steps$i++) {
            if (
        $start $i count($array)) {
                echo 
        $array[$start+$i];
            } else {
                echo 
        $array[$start+$i count($array)];
            }

        Rückwärts analog.

        Du solltest dir aber überlegen, wie du mit dem Offset umgehst - bei 7/5 auch Datensatz 7 ausgeben erspart einigen Ärger mit dem Datensatz 0.

        Kommentar


        • #5
          sei froh das mir langweilig ist


          PHP-Code:
          $arr[0] = 'wert0';
          $arr[1] = 'wert1';
          $arr[2] = 'wert2';
          $arr[3] = 'wert3';
          $arr[4] = 'wert4';
          $arr[5] = 'wert5';
          $arr[6] = 'wert6';
          $arr[7] = 'wert7';
          $arr[8] = 'wert8';
          $arr[9] = 'wert9';

          $ArrayCount count($arr) - 1;
          $Index rand(0$ArrayCount);
          $Steps rand(110);

          echo 
          "Index $Index<br>";
          echo 
          "Steps $Steps<br>";

          for(
          $i 0$i $Steps$i++)
          {
              if(
          $Index $ArrayCount)
              {
                  
          $Index 0;
              }
              echo 
          $arr[$Index] . "<br>";
              
          $Index++;
              

          Kommentar


          • #6
            Hab die Lösung nun gefunden:

            PHP-Code:
            $j 7// start
            $y 5// Schritte
            for($i $y$i 0$i--) {
              if(
            $j == 0) {
                
            $j 7;
              }
              
            $j--;
            }
            $arr[$j
            Bzw. selbiges umgekehrt in die andere Richtung...

            Kommentar


            • #7
              darf ich dir noch nen tipp geben?
              ich weiß jetzt nicht ob du immer so deinen code schreibst

              aber diese variablen namen $i, $x, $y sollte man vermeiden.
              bei for-schleifen oder anderen zählvariablen ist es ok, aber normale Variablen sollten immer nen freffenden Namen haben, damit man schon am Variablennamen sieht, wofür die eigentlich benutzt werden soll

              glaub mir bei längeren codes ist das sehr von vorteil

              Kommentar


              • #8
                PHP-Code:
                $start 7$schritte 5$arr = array(...);

                for(
                $i 0$i<$schritte$i++)
                 echo 
                $arr[ ( $start+$i ) % count($arr) ]; 
                nur als idee.

                Kommentar


                • #9
                  Original geschrieben von penizillin
                  PHP-Code:
                  $start 7$schritte 5$arr = array(...);

                  for(
                  $i 0$i<$schritte$i++)
                   echo 
                  $arr[ ( $start+$i ) % count($arr) ]; 
                  nur als idee.
                  Sieht ganz gut aus. Nur wie bekomme ich das ganze jetzt nochmal in die andere Richtung umgedreht, ohne dass ich dabei in - Werte abdrifte!?

                  Bei $start 2, $schritte = 5 käme ich dann ja auf -3, da funzt das mit dem %count($arr) auch nicht mehr...

                  Kommentar


                  • #10
                    $start-$i

                    Kommentar


                    • #11
                      Original geschrieben von onemorenerd
                      $start-$i
                      Ja ich weis, nur wenn $i größer $start ist komme ich in den negativen Zahlenbereich, da bringt das %count($arr) am Ende auch nichts (funzt wohl nicht mit negativen Zahlen!?)...

                      Kommentar

                      Lädt...
                      X