Zufallswiedergabe eines 1 Dim Arrays

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

  • Zufallswiedergabe eines 1 Dim Arrays

    Moin moin,

    als kleines Snippet bräuchte ich eine Zufallswiedergabe eines Arrays,
    in welchem 4 Strings enthalten sind, aber immer nur 2 zur Anzeige kommen.
    Diese 2 sollten nicht doppelt und eben bei jedem Reload der Seite
    unterschiedlich sein.
    Dazu habe ich bereits angefangen, das haut aber nicht hin. Ich bekomme nicht
    den String "Text1" etc. als Ausgabe.
    Wer mag mir dabei helfen und mich in die Richtung stupsen?
    PHP-Code:
    <?php

    $array 
    = array("Text1""Text2""Text3""Text4");

    array_rand($array2);

    // var_dump($array);  

    foreach($array as $key => $elem){
            echo 
    $elem."<br />";
    }

    ?>
    Danke im vorraus für Konstruktives.

    Gruß

  • #2
    Hallo,

    zuerst mal solltest du dir im Handbuch durchlesen, wie array_rand funktioniert und vor allem was es zurück gibt. Beispiele sind ja dort auch dabei, zum besseren Verständnis.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Zitat von Dirk-Kiel Beitrag anzeigen
      Diese 2 sollten nicht doppelt und eben bei jedem Reload der Seite unterschiedlich sein.
      also wenn es bei jeden Reload der Seite unterschiedlich sein sollte, dann wirst du per Zufall gar nichts erreichen können.

      Dann muss es ja ein Gedächnis geben in Form von einem Sessioneintrag oder aus der Datenbank geholt werden.

      Ist mit Reload der einzelne Benutzer gemeint oder generell?

      Beispiel:

      User 1 sieht 1 und 2
      User 2 sieht 3 und 4

      Nach einem Reload dann

      User 1 sieht 3 und 4
      User 2 sieht 1 und 2

      ??

      Oder habe ich da jetzt einen Denkfehler?
      Professionelle und innovative Programmierung

      Kommentar


      • #4
        Hi,

        falsch ausgedrückt.
        Natürlich können die Strings mehrmals kommen, nur nicht gleichzeitig
        doppelt :
        Text1, Text3 oder
        Text1, Text4 oder
        Text2, Text3

        aber nicht
        Text1, Text1 etc

        CU

        Kommentar


        • #5
          Wie wäre es mit shuffle() und array_slice() ?

          Oder wenn die Daten aus der DB kommen direkt mit
          "ORDER BY RAND() LIMIT 2"
          Wir werden alle sterben

          Kommentar


          • #6
            Um beim Eingangsbeispiel zu bleiben:

            PHP-Code:
            <?php

            $array 
            = array("Text1""Text2""Text3""Text4");

            // array_rand liefert zufällige array keys zurück
            $keys array_rand($array2);

            // erhaltene keys durchlaufen
            foreach($keys as $key)
            {
                
            // array mit angabe des key ausgeben
                
            echo $array[$key]."<br />";
            }

            ?>
            Professionelle und innovative Programmierung

            Kommentar


            • #7
              Hi,

              @dhcomputer: danke, das war sehr hilfreich.
              Meinen Denkfehler habe ich damit gefunden.
              @AmicaNotis: auch dir dank, diese Seite hatte
              ich mir schonmal zu Gemüte geführt.

              Eins vielleicht noch:
              wenn ich jetzt z.B. von 4 auf 8 Strings gehe, mir alle 8
              durcheinander wirbeln lasse und nach 4 Strings eine Aktion
              stattfinden soll (Umbruch, Tabelle...was auch immer) danach
              die restlichen 4 Strings kommen, muß ich den Zähler $i
              auf was richten?

              CU

              Kommentar


              • #8
                Ich sehe hier zwar kein $i, aber behaupte einfach mal 4.

                Kommentar


                • #9
                  PHP-Code:
                  <?php

                  $array 
                  = array("Text1""Text2""Text3""Text4""Text5""Text6""Text7""Text8");

                  // array_rand liefert zufällige array keys zurück
                  $keys array_rand($array8);

                  // erhaltene keys durchlaufen
                  foreach($keys as $key)
                  {
                      
                  // array mit angabe des key ausgeben
                      
                  echo $array[$key]."<br />";
                     
                  // jetzt kommen ja alle untereinander gelistet, 
                     // hier wäre es aber sinnvoll für mich nach 4 erst umzubrechen
                  }

                  ?>
                  Wie stelle ich es an, dass ich mit count (?) nach 4mal $key erst den Zeilenumbruch mache und die anderen 4 danach kommen?
                  PHP-Code:
                   $count count($array) ;  // gibt mir die komplette Anzahl an 
                  CU

                  Kommentar


                  • #10
                    Das $keys-Array hat selbst auch wieder einen Key, wenn du also
                    PHP-Code:
                    foreach ($keys as $i => $key
                    schreibst, kannst du bei $i == 4 vorher den Umbruch machen.

                    Gruß,

                    Amica
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Danke AmicaNoctis, das war hilfreich.

                      Danke auch an alle anderen.

                      CU

                      Kommentar

                      Lädt...
                      X