2017-08-22 4 views
0

Ich bin ein Total newb zu PHP und ich habe ein logisches Problem in meinem Code (array_rand ($ arrCards, 1) läuft aus Elementen vor ihm sollte). Also habe ich eine var_dump des Arrays getan und ich bekomme diese Ausgabe (kurzer Auszug):Ich kann dieses Array von Objekten nicht interpretieren var_dump Ausgabe in 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) 

Was ich nicht verstehe, ist der Index in ‚Objekt (Karte) [index]‘. Es scheint darauf hinzuweisen, warum Array_rand() keine Elemente mehr hat.

Hier ist meine Karte Klasse:

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; 
    } 

} 

Und hier ist, wie ich jede Karte erstellen und in jedem Array schieben:

//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

sehen diese https://stackoverflow.com/questions/8787893/what-is-some-number-next-to-objectsomeclass-in-var-dump-of-an-object-i-hav I hoffe, es hilft –

+0

es scheint eine andere Notation zu sein, was ich bekomme. Aber vorausgesetzt, es wird übersetzt, dann hat diese Zahl in meinem [] nichts mit Indizes zu tun und verursacht daher wahrscheinlich nicht das Problem mit array_rand()? – erv

+0

Ihr Code zeigt nicht, wie Sie die 'array_rand()' verwenden, es ist schwierig, ohne diesen Teil des Codes zu sagen. –

Antwort

0

Ich würde vorschlagen, Sie Schleife Array schieben anstatt manuell tun alles. Dies ist, wie ich es tun würde und var_dump Länge von 52 geben. Beachten Sie auch, dass Sie $ getSuit() und getRank() verwenden sollten.

$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

Prost dafür. Ich habe das Problem mit $ rank und $ suit "$ this->" bemerkt, als ich den Code gepostet habe (mein Programm ist noch nicht so weit gekommen, ohne dass es bereits abgestürzt ist ...;)). – erv

Verwandte Themen