Problem mit kurzen Kartenmischsystem.

Kai008

Erfahrenes Mitglied
Hab mir das gerade schnell geschrieben.
Nur irgendwie bleiben manche Felder damit leer:

PHP:
for($i = 0; $i < 52; $i++)
{
	echo $i." - ".$karte[i][0]."<br>";

	$karte_cache[0] = $karte[i][0];
	$karte_cache[1] = $karte[i][1];
	
	srand ((double)microtime() * 1000000);
	$rand = rand(0, 51);
	
	$karte[i][0] = $karte[$rand][0];
	$karte[i][1] = $karte[$rand][1];
	
	$karte[$rand][0] = $karte_cache[0];
	$karte[$rand][1] = $karte_cache[1];
}

Und finde den Fehler einfach nicht. x_X
Shuffle funktioniert soweit ich das mitbekommen habe nicht mit mehrdimensionalen Arrays.

Definiert wird so:

PHP:
$karte[39][0] = "2";
$karte[39][1] = "img/2herz";

Also Feld 0 enthält den Wert und Feld 1 das Bild.

Kann mir wer bitte sagen woran das liegt?
 
Moin,

Shuffle funktioniert soweit ich das mitbekommen habe nicht mit mehrdimensionalen Arrays.

Das hast du falsch mitbekommen....shuffle() mischt die 1.Dimension bei mehrdimensionalen Arrays sehr wohl, und mehr wäre für dein Anliegen ja auch eher kontraproduktiv.

Mische per shuffle() und hole dann per array_splice() für jeden Spieler die gewünschte Zahl Karten vom Stapel, und schon kanns losgehen(sofern ausreichend Getränke vorrätig sind) :-)


P.S: ab PHP 4.2 kannst du dir den Zufallsgenerator sparen ;)
 
Echt?
Ich habe es so versucht:

PHP:
echo $karte[0][0]." - " .$karte[0][1]."<br>";
$karte = shuffle($karte);
echo $karte[0][0]." - " .$karte[0][1]."<br>";

Und raus kommt immer:

Code:
2 - img/2kreuz
-

Meinst du mit "Zufallsgenerator" srand?
 
shuffle() mischt den Ausgangsarray direkt, du musst das Ergebnis von shuffle() nicht wie bei anderen Array-Methoden wieder zuweisen.

Daran hapert auch die Ausgabe...denn der Rückgabewert von shuffle() ist nicht der gemischte Array, sondern TRUE/FALSE

Also einfach:
PHP:
echo $karte[0][0]." - " .$karte[0][1]."<br>";
shuffle($karte);
echo $karte[0][0]." - " .$karte[0][1]."<br>";

Zum Zufallsgenerator: jo, meine ich ;)
 
Zurück