Klaus: Variablen aus Array ausschließen

Hallo,

Ich habe ein Array gebildet und daraus einen zufälligen Wert herausgelesen:

$felder = array("Hund", "Katze", "Maus"  
$bauer1 = $felder[rand(0,2)];

Jetzt soll ein weiterer Wert zufällig aus dem Array für $bauer2 ausgewählt werden, allerdings darf der Wert, den $bauer1 erhalten hat, nicht mehr zur Auswahl stehen.

Wie geht das ?

  1. Natürlich heißt es

    $felder = array("Hund", "Katze", "Maus");
    $bauer1 = $felder[rand(0,2)];

    1. Hello,

      $felder = array("Hund", "Katze", "Maus");
      $bauer1 = $felder[rand(0,2)];

      besser:

      $felder = array("Hund", "Katze", "Maus");
        $index = rand(0,2);
        $bauer[] = $felder[$index];
        $unset($felder[$index]);

      $index = rand(0,2);
        $bauer[] = $felder[$index];
        $unset($felder[$index]);

      usw.

      Liebe Grüße aus dem Cyberspace

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hello,

        $felder = array("Hund", "Katze", "Maus");
        $bauer1 = $felder[rand(0,2)];

        besser:

        $felder = array("Hund", "Katze", "Maus");
          $index = rand(0,count($felder -1));   ## solange das Array überhaut noch Elemente hat
          $bauer[] = $felder[$index];
          $unset($felder[$index]);

        $index = rand(0,count($felder -1)2);
          $bauer[] = $felder[$index];
          $unset($felder[$index]);

        Wenn es nicht auf die Reihenfolge der Elemente im Array ankommt:

        $felder = array("Hund", "Katze", "Maus");

        shuffle($felder);
            $zufall[] = pop($felder);

        Liebe Grüße aus dem Cyberspace

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Das funktioniert bei mir nicht. Ich bekomme immer den fehler:

          Fatal error: Call to undefined function: ()

          Ich habe folgendes gemacht:

            
          $index = rand(0,2);  
            $bauer1 = $felder[$index];  
            $unset($felder[$index]);  
            
            $index = rand(0,2);  
            $bauer2 = $felder[$index];  
            $unset($felder[$index]);  
          
          
          1. Hi,

            Das funktioniert bei mir nicht. Ich bekomme immer den fehler:

            warum wendest Du Codes an, die Du nicht verstehst? Recherchiere das, was Du an Informationen erhältst.

            @Tom: Wann lernst Du endlich, dass es fast immer *schädlich* ist, fertige Codes als Antwort zu posten?

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hello,

              Das funktioniert bei mir nicht. Ich bekomme immer den fehler:

              warum wendest Du Codes an, die Du nicht verstehst? Recherchiere das, was Du an Informationen erhältst.

              @Tom: Wann lernst Du endlich, dass es fast immer *schädlich* ist, fertige Codes als Antwort zu posten?

              Wann lernst Du endlich, dass wir zwar gernen zusammen einen Whiskey trinken können, ich Dich aber niemals nicht bevormunden möchte? :-)

              Liebe Grüße aus dem Cyberspace

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hi,

                Wann lernst Du endlich, dass wir zwar gernen zusammen einen Whiskey trinken können, ich Dich aber niemals nicht bevormunden möchte? :-)

                wenn Du aus dem Wort "Whiskey" noch das "e" streichst, geht das in Ordnung. Bei der Gelegenheit können wir es dann auch zu unterlassen vermeiden, nicht über das Fehlen mehrfacher Verneinungen nicht zu schweigen. Oder so ähnlich ... :-)

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hello,

                  Wann lernst Du endlich, dass wir zwar gernen zusammen einen Whiskey trinken können, ich Dich aber niemals nicht bevormunden möchte? :-)

                  wenn Du aus dem Wort "Whiskey" noch das "e" streichst, geht das in Ordnung. Bei der Gelegenheit können wir es dann auch zu unterlassen vermeiden, nicht über das Fehlen mehrfacher Verneinungen nicht zu schweigen. Oder so ähnlich ... :-)

                  Ich hatte es extra eingebaut, damit wir bei einm guten Single-Malt dann wenigstens ein Gesprächsthema haben :-)

                  Liebe Grüße aus dem Cyberspace

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Hi,

                    Ich hatte es extra eingebaut, damit wir bei einm guten Single-Malt dann wenigstens ein Gesprächsthema haben :-)

                    gut, dann schlage ich vor, wir beginnen mit einem Taliskr oder einem Glenlivt ;-)

                    Cheatah

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
          2. Hello,

            Das funktioniert bei mir nicht. Ich bekomme immer den fehler:

            Fatal error: Call to undefined function: ()

            Ich habe folgendes gemacht:

            $index = rand(0,2);
              $bauer1 = $felder[$index];

            unset($felder[$index]);

            $index = rand(0,2);
              $bauer2 = $felder[$index];

            unset($felder[$index]);

              
            War wohl ein doofer Tippfehler von mir.  
              
            Aber Du solltet die Grenzen des Arrays nicht überschreiten und außerdem hat dieser mein erster  
              
            Liebe Grüße aus dem Cyberspace  
              
              
              
              
            Tom vom Berg  
            ![](http://selfhtml.bitworks.de/Virencheck.gif)  
              
            
            -- 
            Nur selber lernen macht schlau  
            <http://bergpost.annerschbarrich.de>
            
            1. Hello,

              Aber Du solltet die Grenzen des Arrays nicht überschreiten und außerdem hat dieser mein erster Code noch ein weiteres Problem. Wenn Du üner den numersichen Index des Arrays zugreifst und dann ein Element daraus löschst, wird der numerische Index nicht neu aufgebaut und daher ein "Loch".

              Du müsstest also dann auch noch das Array reorganisieren lassen

              -> array_slice() und array_splice() sind dafür geeinget.

              Liebe Grüße aus dem Cyberspace

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Ich habe jetzt folgendes probiert:

                  $bauer1 = $felder[rand(0,2)];  
                  
                  $felder2=array_slice ($felder, '$bauer1');  
                  
                  $bauer2 = $felder2[rand(0,1)];
                

                Aber der Wert wird immer noch zur Auswahl gestellt.

                1. Hi,

                  $felder2=array_slice ($felder, '$bauer1');

                  wo hast Du die Information her, der String '$bauer1' sei vom Typ int?

                  Klaus, Du musst dringend lernen, die Dokumentation zu lesen. Aus diesem Grund verlinke ich sie auch allgemein.

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes