配列から重複取り出しを防ぐ
度々質問すみません。早急に教えて頂ければ幸いです。
二人のプレイヤーがカードを以下の通り引いた時、同じカードが重複して表示される現象を回避する方法をご教示頂けますでしょうか。
public function createCards()
{
//変数の初期化
$newCard = array();
$marks = array(
"clubs",
"hearts",
"diams",
"spades",
);
//山札を作成
$card = array();
for($mark = 0; $mark < 4; $mark++) {
for($num = 1; $num <= 13; $num++) {
$newCard["mark"] = $marks[$mark];
$newCard["number"] = $num;
array_push($card,$newCard);
}
}
return $card;
}
/**
* 手札の作成
* @param Array $tehuda_player1, $tehuda_player2
* @return string
*/
public function shuffleCards($card)
{
//山札をランダムに取り出す
shuffle($card);
//各プレイヤー山札から5枚引く
$tehuda_player1[] = array();
$tehuda_player2[] = array();
for($i = 0; $i < 5; $i++) {
$tehuda_player1[] = array_pop($card);
}
for($i = 0;$i < 5; $i++){
$tehuda_player2[] = array_pop($card);
}
return $tehuda_player1;
return $tehuda_player2;
}
/**
* 手札の表示
*
*/
public function showCards($tehuda_player1,$tehuda_player2)
{
//トランプの画像を用意する
foreach($tehuda_player1 as $tmp) {
$mark = $tmp["mark"];
$number = $tmp["number"];
echo '<img src="image/gif/'.$mark."_".$number.'.gif" alt = "">';
}
}
理想としては、$tehuda_player1の処理が終わった後には$tehuda_player1が引いた分のカードが配列から無くなる事なのですが、$card-$tehuda_player1と書くと何も表示されなくなります。
原因わかる方、教えていただけたら幸いです。
コメントより、関数の使用想定を記載します。
$card = $trump->createCards(); //カード52枚
$tehuda_player1 = $trump->shuffleCards($card);
$tehuda_player2 = $trump->shuffleCards($card);
$player1 = $trump->showCards($tehuda_player1);
$player2 = $trump->showCards($tehuda_player2);
echo "<div class='player1_cards'>".$player1."</div>";
echo "<div class='player2_cards'>".$player2."</div>";