试图传递函数参数

时间:2011-02-22 01:54:19

标签: php arrays function parameters

我正在尝试从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)并为我的新函数传递数组以进行评估时遇到了一些麻烦。我是否走错了方向才开始?

1 个答案:

答案 0 :(得分:2)

您的功能定义是:

public function kickerCards(array $kickers);

所以$ kickers必须是一个阵列...... 您正尝试使用以下方法调用该函数:

$this->kickerCards($faceValue, $CardsGroupedByValues);

传递两个参数,$ faceValue是一个整数,第二个参数是一个数组。

您的函数定义应如下所示:

public function kickerCards($faceValue, array $cards);

如果我可以进一步详细说明,做出一些假设。

我的假设:

  1. 该功能采用当前持有的面值和一系列卡片
  2. 该函数的返回应该是该数组中与面值不匹配的卡片。
  3. 卡片是一个带有值(可能适合)键的数组。例如 $twoOfHearts = array('value'=>2,'suit'=>'hearts');
  4. 所以这是一个可能的实现

    public function kickerCards($faceValue, array $cards) {
        $kickerCards = array();
        foreach($cards as $card) {
            if ($card['value'] != $faceValue)
                $kickerCards[] = $card;
        }
        return $kickerCards;
    }