我正在尝试从elseif语句中获取两行代码,并创建一个将参数返回给父函数的函数。这是一款简单的纸牌游戏,可以搜索我的$ Cards阵列中的三种。这是原始代码:
elseif(count($Cards) == 3) {
$CardsNotOfValue = $this->_getCardsNotOfFaceValue($faceValue, $CardsGroupedByValues);
list($Kicker1, $Kicker2) = $this->_getSortedCards($CardsNotOfValue);
return new ThreeOfAKind(array_merge($Cards, array($Kicker1, $Kicker2)));
}
到目前为止,我的代码如下所示:
function { if (count($Cards) == 3) {
**LINE 36** $Kicker = $this->kickerCards($faceValue, $CardsGroupedByValues); }
**LINE 55** public function kickerCards(array $kickers)
{
$CardsNotOfValue = $this->_getCardsNotOfFaceValue($faceValue, $CardsGroupedByValues);
return $this->_getSortedCards($CardsNotOfValue);
}
当我尝试执行四种类型时,我收到以下错误(我试图突出显示上面的问题):
PHP Catchable致命错误:传递给BestHandIdentifier :: kickerCards()的参数1必须是一个数组,给定整数,在第36行的/home/dev/parameter2/BestHandIdentifier.php中调用,并在/ home / dev / parameter2中定义第55行的/BestHandIdentifier.php
我在理解如何创建($ faceValue,$ CardsGroupedByValues)并为我的新函数传递数组以进行评估时遇到了一些麻烦。我是否走错了方向才开始?
答案 0 :(得分:2)
您的功能定义是:
public function kickerCards(array $kickers);
所以$ kickers必须是一个阵列...... 您正尝试使用以下方法调用该函数:
$this->kickerCards($faceValue, $CardsGroupedByValues);
传递两个参数,$ faceValue是一个整数,第二个参数是一个数组。
您的函数定义应如下所示:
public function kickerCards($faceValue, array $cards);
如果我可以进一步详细说明,做出一些假设。
我的假设:
$twoOfHearts = array('value'=>2,'suit'=>'hearts');
所以这是一个可能的实现
public function kickerCards($faceValue, array $cards) {
$kickerCards = array();
foreach($cards as $card) {
if ($card['value'] != $faceValue)
$kickerCards[] = $card;
}
return $kickerCards;
}