Попытка передать параметры функции - PullRequest
0 голосов
/ 22 февраля 2011

Я пытаюсь взять две строки кода из оператора 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 Пойманная фатальная ошибка: аргумент 1, передаваемый BestHandIdentifier :: kickerCards (), должен быть массивом, заданным целым числом, вызываемым в /home/dev/parameter2/BestHandIdentifier.php в строке 36 и определенным в / home / dev / parameter2 /BestHandIdentifier.php в строке 55

У меня возникли проблемы с пониманием того, как создать ($ faceValue, $ CardsGroupedByValues) и передать массив для оценки моей новой функции. Разве я зашел слишком далеко в неправильном направлении?

1 Ответ

2 голосов
/ 22 февраля 2011

Ваше определение функции:

public function kickerCards(array $kickers);

Так что $ kickers должен быть массивом ... Вы пытаетесь вызвать функцию с помощью:

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

Передавая два аргумента, $ faceValue является целым числом, 2-й аргумент является массивом.

Ваше определение функции должно выглядеть следующим образом:

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

Если бы я мог уточнить, сделав некоторые предположения.

Мои предположения:

  1. Функция принимает номинал и массив карт, находящихся в данный момент
  2. Возвращением функции должны быть карточки в этом массиве, которые не соответствуют номинальным значениям.
  3. Карты - это массив со значением (и, возможно, мастью) ключа. например $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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...