2011-07-22 54 views
0

我對編程完全陌生,至少在幾個小時內一直在努力。它只需要5張牌給玩家。這是我的代碼:如何將for循環的值存儲在數組中?

<?php 
//setting up arrays 
$cardLocation = array(); 
$suits = array("Hearts", "Diamonds", "Spades", "Clubs"); 
$ranks = array("Ace", 2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack","Queen", "King"); 

//filling the deck 
for($rank=0; $rank<13; $rank++){ 
    for($suit=0; $suit<4; $suit++){ 
    $cardLocation[$rank][$suit] = "deck"; 
    } 
} 

//dealing the cards to a player 
for($i=0; $i<5; $i++){ 

$duplicate = true; 

while($duplicate){ 
    $suit = rand(1, 4); 
    $rank = rand(1, 13); 
    if($cardLocation[$rank][$suit] == "deck"){ 
     $cardLocation[$rank][$suit] = "player"; 
     $duplicate = false; 

    } 
    } 
} 

?> 

我試圖找出的for循環的每個值存儲到一個數組,然後打印出來的方法。有幾個想法,但都失敗了。任何幫助將受到歡迎。

+0

有點offtopic:我建議檢查一個'foreach'循環。基本上,它會爲數組的每個值運行一個循環,因此在稍後更改數組時,您不必限制長度。另外寫起來更簡單,更短。嘗試'foreach($作爲$ value)'' – switz

回答

0

什麼是這樣的:

$playerCards = array(); 

... 
for ($i=0; $i<5; $i++) { 

... 
    $playerCards[$i]["rank"] = $rank; 
    $playerCards[$i]["suit"] = $suit; 
... 
} 
1

我不知道,一個二維數組是必需的,但如果它不是你可以考慮這樣的事情:

//setting up arrays 
$suits = array('Hearts', 'Diamonds', 'Spades', 'Clubs'); 
$ranks = array('Ace', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Jack','Queen', 'King'); 

$deck = array(); 
foreach ($suits as $suit) { 
    foreach ($ranks as $rank) { 
     $deck[] = $rank . ' of ' $suit; 
    } 
} 

$playerHand = array(); 
for ($i=0; $i<5; $i++) { 
    $card = array_rand($card); // choose a random card 
    $playerHand[] = $deck[$card]; // add to the end of the player hand 
    unset($deck[$card]);   // prevent duplicate cards being dealt 
} 

foreach ($playerHand as $playerCard) { 
    echo $playerCard . '<br />'; 
} 

// just by the way a useful way to debug arrays is like this: echo '<pre>' . print_r($playerHand,true) . '</pre>'; 
相關問題