PHP';s shuffle()表示它需要一个数组,当我给它一个数组时 我正把一个简单的项目放在一起,以便熟悉PHP;我来自C#背景。我遇到的一件事是类型意识的概念,因为没有。。。不是真的。例如: <?php include_once 'Player.php'; include_once 'DeckOfCards.php'; class Dealer extends Player { public $deck; public function __construct($name){ $this->name = $name; $this->money = 10000; } public function setNewDeck(){ $this->deck = new DeckOfCards(); return true; } public function dealCard(){ return array_pop($deck); } public function shuffleDeck(){ shuffle($this->deck); return true; } } ?>

PHP';s shuffle()表示它需要一个数组,当我给它一个数组时 我正把一个简单的项目放在一起,以便熟悉PHP;我来自C#背景。我遇到的一件事是类型意识的概念,因为没有。。。不是真的。例如: <?php include_once 'Player.php'; include_once 'DeckOfCards.php'; class Dealer extends Player { public $deck; public function __construct($name){ $this->name = $name; $this->money = 10000; } public function setNewDeck(){ $this->deck = new DeckOfCards(); return true; } public function dealCard(){ return array_pop($deck); } public function shuffleDeck(){ shuffle($this->deck); return true; } } ?>,php,phpstorm,Php,Phpstorm,关于这种方法,我遗漏了什么?这一行 $this->deck = new DeckOfCards(); 将返回一个对象,而不是数组 您需要的是重新调用数组的东西。您可能需要这样做: $myDeck = new DeckOfCards(); shuffle($myDeck->getDeck()); // where DeckOfCards::getDeck() returns an `array()` 错误很明显:函数需要一个数组,而您给了它一个对象(DeckOfCa

关于这种方法,我遗漏了什么?

这一行

        $this->deck = new DeckOfCards();
将返回一个对象,而不是数组

您需要的是重新调用数组的东西。您可能需要这样做:

$myDeck = new DeckOfCards();
shuffle($myDeck->getDeck()); // where DeckOfCards::getDeck() returns an `array()`

错误很明显:函数需要一个数组,而您给了它一个对象(DeckOfCards的一个实例)。如果此对象是所有卡的容器,那么您可能需要在该对象内执行洗牌,例如
$this->deck->shuffle()
-使用
shuffle
方法在另一个类中编写。您的代码实际上是-
$this->deck=new DeckOfCards;洗牌($this->deck)你给它一个对象-数组从哪里来?命题:洗牌工作(使用数组)<代码>$x=数组(1,2,3);洗牌($x)
。结论:数组没有通过。哦,糟了。。。我把自己搞糊涂了。卡片组对象的卡片组属性是实际数组。。。谢谢我想我只是需要另一套眼睛更好的解决方案是做
$myDeck->shuffle()
,让
DeckOfCards
类在内部处理洗牌,可能是在私有数组上调用
shuffle()
。@jcsanyi同意-现在是凌晨!不要责怪早晨!她既可爱又性感,对编程一无所知……)我完全理解了这样一个事实,即卡片组对象将数组作为属性保存。在这个例子中,我想要的是$this->deck->deck。我应该重构这个…不要从
DeckOfCards
内部洗牌
$this->deck->deck
-DeckOfCards上的属性不应该是公共的,
DeckOfCards
应该不能看到该类的内部。改用一种方法(呵呵,@jcsanyi说的没错)。
$myDeck = new DeckOfCards();
shuffle($myDeck->getDeck()); // where DeckOfCards::getDeck() returns an `array()`