2017-08-22 63 views
0

我是一個PHP的總新手,我在我的代碼中有一個邏輯問題(array_rand($ arrCards,1)應該)。所以,我已經做了數組的後續代碼var_dump,我得到這個輸出(簡要摘錄):我無法解釋這個對象數組var_dump在PHP中輸出

array (size=52) 
    0 => 
    object(Card)[2] 
     private 'suit' => string 'heart' (length=5) 
     private 'rank' => string 'a' (length=1) 
    1 => 
    object(Card)[3] 
     private 'suit' => string 'heart' (length=5) 
     private 'rank' => string '2' (length=1) 
    2 => 
    object(Card)[4] 
     private 'suit' => string 'heart' (length=5) 
     private 'rank' => string '3' (length=1) 

我不明白的是在索引「對象(卡)[指數]」。它似乎暗示了爲什麼array_rand()用完了元素。

這是我的卡類:

class Card { 
    //properties 
    private $suit; 
    private $rank; 

    //constructor 
    public function __construct($r, $s) { 
     $this->rank = $r; 
     $this->suit = $s; 
    } 

    //methods 
    public function getSuit() { 
     return $suit; 
    } 

    public function getRank() { 
     return $rank; 
    } 

} 

這裏是我創建的每個卡並將其推入每個數組:

//constructor 
    public function __construct() { 
     $this->arrCards = array(); 

     $objCard = new Card("a", "heart"); 
     array_push($this->arrCards, $objCard); 
     $objCard = new Card("2", "heart"); 
     array_push($this->arrCards, $objCard); 
     $objCard = new Card("3", "heart"); 
blah blah continued... 
+2

看到這個https://stackoverflow.com/questions/8787893/what-is-some-number-next-to-objectsomeclass-in-var-dump-of-an-object-i-hav我希望它有助於 –

+0

它似乎是我得到的不同的表示法。但假設它翻譯,那麼我的[]中的這個數字與索引無關,因此可能不會導致array_rand()的問題? – erv

+0

你的代碼並不顯示你如何使用'array_rand()',如果沒有這部分代碼就很難說清楚。 –

回答

0

我建議你循環的數組推動的,而不是做手工一切。這就是我要做的事情,var_dump的長度爲52.還要注意,你應該在getSuit()和getRank()上使用$ this。

$cards_array = array(); 
$ranks = array('a',2,3,4,5,6,7,8,9,10,'j','q','k'); 
$suits = array('heart', 'spade', 'diamond', 'club'); 

foreach ($suits as $suit) { 
    foreach($ranks as $rank) { 
     $cards_array[] = new Card($rank, $suit); 
    } 
} 

var_dump($cards_array); 

class Card { 
    //properties 
    private $suit; 
    private $rank; 

    //constructor 
    public function __construct($r, $s) { 
     $this->rank = $r; 
     $this->suit = $s; 
    } 

    //methods 
    public function getSuit() { 
     return $this->suit; 
    } 

    public function getRank() { 
     return $this->rank; 
    } 
} 
+0

爲此歡呼。我注意到$ rank和$ suit「$ this->」問題,因爲我發佈了代碼(我的程序實際上沒有崩潰,但實際上還沒有達到這個程度......))。 – erv