Claudius L.: Array zufällig ausgeben und ausgegeben Werte merken

Beitrag lesen

Hallo,

es gibt zwar schon einige Antworten, allerdings verstehe ich die Frage etwas anders.
Ich denke, pro Request soll 1 zufälliges Element (z.B. eine Farbe) ausgegeben werden. Beim nächsten Request sollen bereits ausgegebene Elemente nicht mehr zufällig gewählt werden können. Wurde jedes Element ein Mal ausgegeben, wird neu gemischt und es geht von vorne los.

In Code könnte das etwa so aussehen (ungetestet!) – nur als Konzept und ohne Fehlerbehandlung:

$farben = array("rot", "gruen", "blau", "schwarz");  
  
$indices_serialized = file_get_contents("indices_serialized.txt"); // oder anders persistent speichern bzw. laden  
  
if (count($indices_serialized) == 0 || !is_array($indices_serialized)) { // jedes Element wurde bereits ein Mal ODER: Skript lief noch nie, indices_serialized.txt enthält nur ""  
	$indices_serialized = array_keys($farben); // alle Keys stehen ab jetzt wieder als Index zur Verfuegung  
	shuffle($indices_serialized);  
}  
  
  
echo $farben[array_pop($indices_serialized)];  
  
file_put_contents("indices_serialized.txt", serialize($indices_serialized));  

Es gibt eine Race-Condition, wenn das Skript parallel aufgerufen wird – ob das für den Anwendungsfall tragisch wäre, muss der TO bewerten.

Viele Grüße
Claudius

0 59

Array zufällig ausgeben und ausgegeben Werte merken

Sinje
  • php
  1. 0
    Siri
    • programmiertechnik
  2. 0
    Melvin Cowznofski
    1. 0
      Tom
      1. 0
        Tom
      2. 0
        Melvin Cowznofski
        1. 0
          Tom
    2. 0

      Glossar: "auskommentieren"

      Der Martin
      • programmiertechnik
      1. 0
        Matthias Apsel
    3. 0
      Matthias Apsel
      1. 0
        Melvin Cowznofski
  3. 0
    Tom
    1. 0
      Sinje
      1. 0
        Tom
  4. 0

    Ticken PHP-Programmierer anders?

    Siri
    1. 0
      Matthias Apsel
      1. 0
        Siri
        1. 0

          PHP tickt anders - wie eigentlich jede Programmiersprache

          dedlfix
          1. 0
            Siri
            1. 0
              dedlfix
    2. 0
      Tom
      1. 0
        Siri
        1. 0
          tami
          1. 0
            Tom
        2. 0
          Tom
          1. 0
            Sinje
            1. 0
              Tom
  5. 0
    Claudius L.
    1. 0
      tami
      1. 0
        Claudius L.
    2. 0
      Tom
      1. 0
        Tom
      2. 0
        Claudius L.
        1. 0
          Tom
          1. 0
            Claudius L.
            1. 0
              Tom
            2. 0
              tami
              1. 0
                tami
                1. 0

                  Wirksames File-Locking geht anders!

                  Tom
                  1. 0
                    tami
                    1. 0
                      Tom
                      1. 0
                        tami
                        1. 0

                          gehst Du eine Test-Wette mit mir ein?

                          Tom
                          • menschelei
                          1. 0
                            tami
                            1. 0

                              Und wer testet jetzt?

                              Tom
                              1. 0
                                tami
                                1. 0
                                  Tom
                                  1. 0
                                    Matthias Apsel
                                    1. 0

                                      neue Artikel anlegen, Namen finden

                                      Tom
                                      • selfhtml-wiki
                                      1. 0
                                        Matthias Apsel
                                        1. 0
                                          Tom
                                          1. 0
                                            Matthias Apsel
                                            1. 0
                                              tami
                                  2. 0

                                    Und wer testet jetzt? -> mit SQL?

                                    Gaby
                                    • datenbank
                                    1. 0
                                      Tom
              2. 0
                Tom
  6. 0

    Array zufällig ausgeben und ausgegeben Werte merken - so?

    tami
    1. 0
      Tom
  7. 1
    Tom