2017-08-22 3 views
0

私はPHPのnewbです。私のコードでは論理的な問題があります(array_rand($ arrCards、1)すべきです)。だから私は、配列ののvar_dumpをやったと私は、この出力(簡単な抜粋)を取得:このオブジェクトの配列を解釈できません。

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 Iを参照してくださいそれが助けてくれることを願っています。 –

+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

関連する問題