Array_pop - Problem!

  • Themenstarter Themenstarter Dkl764
  • Beginndatum Beginndatum
D

Dkl764

Die Fehlermeldung:
Siehe auf der Seite wo das Problem ist - Klick hier!

Dieses Script:
PHP:
$deck = explode ( ';', $karten );
$hand = array();
$count = count($deck);
$deck_rand = array_rand($deck, 6);

//6 Karten in die Hand nehmen 
for($i = 0; $i < count ( $deck_rand ); $i++ ){
$nextcard = array_pop($deck[$deck_rand[$i]]);
array_push($hand, $deck[$deck_rand[$i]]);
}

(Das ist nur ein ausschnitt des kompletten Scriptes. Die Variable $karten ist natürlich mit Inhalt gefüllt. Daran liegt es nicht.
Der Fehler tritt nur auf, sofern ich das array_rand nutze. Scheint vielleicht daran zu liegen.
 
Nunja, der Fehler steht eigentlich sehr klar da. Wenn du ein bestimmtes Element des Arrays rausholen willst, ist array_pop nicht das richtige. array_pop holt das letzte! Element aus dem Array und löscht es aus dem Array. Daher auch die Meldung "Das Argument muss vom Typ array sein".
 
Und welcher PHP-Befehl wäre geeignet?
Und wie müsste das Script dann aussehen?
 
Das kommt darauf an, was du machen willst. Willst du das bestimmte Element mit dem Index $i haben dann kannst du das so machen:

PHP:
$nextcard = $deck[$deck_rand[$i]]; 
unset(deck[$deck_rand[$i]]);


Wenn du wirklich das letzte Element haben willst:

PHP:
$nextcard = array_pop($deck);
 
hi,

die Frage ist, willst du überhaupt das letzte Element rausholen? Sonst muss du doch einfach nur
HTML:
$nextcard = $deck[$deck_rand[$i]];

nehmen, dann holst du doch aus dem Array $deck den Wert der sich an der Stelle, die im Array $deck_rand an der Stelle $i befindet raus (a bissl kompliziert is ja auch wurscht) =)
 
Nein, es muss direkt aus der Array gelöscht werden. Es soll ja keine Karte doppelt gezogen werden. Später werde ich nämlich nochmal fürs normale ziehen so eine abfrage machen, da muss dann die Karte schon vom Deck raus bzw. gezogen sein ;)

Danke. :)
 
Zurück