2016-11-09 76 views
1

我遇到了numberOfDecks方法的問題。我嘗試調用在構造函數中創建的卡片數組,但是一個錯誤不斷出現,我傳遞了一個未定義的變量($ cards)。我想因爲它是一個全局變量,所以$ cards可以被調用到numberOfDecks方法。麻煩了解全局變量在類中的調用

<?php 
/* creating a deck of cards class to be used in a blackJack game*/ 

class Deck{ 

    public $cards = array(); 

    //creates an instance of a deck of cards (works) 

    public function __construct(){ 
    $values =array('2','3','4','5','6','7','8','9','10','J','Q','K','A'); 
    $suits =array('Diamond','Club','Heart','Spade'); 
     foreach ($suits as $suit) { 
     foreach($values as $value){ 
      $this->cards[] = "$value of $suit's"; 
     } 
     } 
    } 

    /*trying to add more decks to increase number of total cards 
    in my array (does not work)*/ 

    public function numberOfDecks($number){ 

    $this->cards = $cards; 
    $this->number= $number; 
    for($i = 0 ; $i < $number; $i++){ 
      array_push($cards[],$i); 
    } 
    return $cards; 

    } 
} 



$deck = new Deck();//works as expected 
$deck->numberOfDecks(3);//trouble 
$shuffled = shuffle($deck->cards);//works as expected 
var_dump($deck); 
+0

這是basiclly你最後一個問題 – 2016-11-09 04:37:15

+0

@Dagon愚弄的人,他們怎麼會是相同的程序,但它是一個不同的問題完全,如果你不想看看我的問題,通過一切手段只是沿着 – watkins1179

回答

1

您的變量$cards未定義,因爲您沒有聲明它。

public function numberOfDecks($number){ 

$this->cards = $cards; 

您可能是想翻轉分配方向。

$cards = $this->cards; 

鑑於添加甲板對象橋面總您的評論,翻轉分配方向後,嘗試使用array_merge

Here's a working fiddle.

<?php 

class Deck{ 

    public $cards = array(); 

    //creates an instance of a deck of cards (works) 

    public function __construct(){ 
    $values =array('2','3','4','5','6','7','8','9','10','J','Q','K','A'); 
    $suits =array('Diamond','Club','Heart','Spade'); 
     foreach ($suits as $suit) { 
     foreach($values as $value){ 
      $this->cards[] = "$value of $suit's"; 
     } 
     } 
    } 

    public function numberOfDecks($number){ 

     $cards = $this->cards; 

     $this->number = $number; 
     for($i = 0 ; $i < $number; $i++){ 
      $this->cards = array_merge($this->cards, $cards); 
     } 

    } 
} 



$deck = new Deck();//works as expected 

// how many cards are intially constructed? 
echo "count of cards in new deck: " . count($deck->cards) . "\n<br/>\n"; 

// add 3 more decks of cards 
$deck->numberOfDecks(3);//trouble 
echo "count of cards after adding 3 decks: " . count($deck->cards); 

// $shuffled = shuffle($deck->cards);//works as expected 
// var_dump($deck); 

結果輸出:

新甲板上牌數:52 卡 數增加3套牌後:208

+0

移動我仍然有添加多個套牌的麻煩我已經嘗試array_push和array_merge功能,我仍然有麻煩 – watkins1179

+0

我仍然有問題添加更多的卡到整體甲板我已經嘗試array_merge和array_push,他們都失敗 – watkins1179

+0

@ watkins1179我已經更新了我的答案[演示完整的示例](https://3v4l.org/h3Sv5)。我希望它有幫助。 –