2016-11-09 79 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)。我希望它有帮助。 –