2017-08-24 23 views
0

私は気にならない奇妙な問題に直面しています。短いストーリー、私が作っているゲームでミニゲームに参加すると、うまくいく!しかし、私がミニゲームから出ると、それは私を部屋に戻すはずですが、代わりにそれは私にエラーを与えます。PHPキャッチ可能な致命的なエラー:渡された引数1は型配列でなければなりません。与えられた行は208行目で呼び出され、定義されています。

これはエラーです:

PHP Catchable fatal error: Argument 1 passed to Sweater\Server::leaveTable() must be of the type array, string given, called in /usr/share/nginx/Sweater/Sweater/GameHandler.php on line 208 and defined in /usr/share/nginx/Sweater/Sweater/GameHandler.php on line 184

私はこの質問をする前に、いくつかの研究を行なったし、私が出会ったが、彼らは悲しげに動作しませんでした解決策を試してみました。

GameHandler.php handleLeaveTable:

function handleLeaveTable(Array $arrData, Client $objClient) { 
     $intPlayer = $arrData[0]; 
     $this->leaveTable($intPlayer); // Line 208 
    } 

GameHandler.php leaveTable:

function leaveTable(Array $arrData, Client $objClient) { // Line 184 
      $intPlayer = $arrData[4]; 
      $tableId = $intPlayer->tableId; 
      if($tableId !== null) { 
       $seatId = array_search($intPlayer, $this->playersByTableId[$tableId]); 
       $opponentSeatId = $seatId == 0 ? 1 : 0; 
       if(isset($this->playersByTableId[$tableId][$opponentSeatId])) { 
        $this->playersByTableId[$tableId][$opponentSeatId]->addCoins(10); 
        } 
        unset($this->playersByTableId[$tableId][$seatId]); 
        unset($this->tablePopulationById[$tableId][$intPlayer->$strUsername]); 
        $objClient->sendXt('ut', $objClient->getIntRoom(), $tableId, $seatId); 
        $intPlayer->tableId = null; 
        if(count($this->playersByTableId[$tableId]) == 0) { 
        $this->playersByTableId[$tableId] = array(); 
        $this->gamesByTableId[$tableId] = null; 
       } 
     } 
    } 

ここでの問題は何ですか?私はすべてをチェックして解決策には出られなかった。 $ arrDataは何

編集、:$arrDataから

function decodeData($strData){ 
     $arrData = simplexml_load_string($strData, 'SimpleXMLElement', LIBXML_NOCDATA); 
     if($arrData === false){ 
      throw new Exceptions\HandlingException('Unable to parse client\'s XML data'); 
     } 
     $arrData = json_decode(json_encode((array)$arrData), true); 
     return $arrData; 
    } 

function handleData($strData, $objClient){ 
     $arrData = explode($this->arrConfig['Packets']['Delimiter'], $strData); 
     array_pop($arrData); 
     foreach($arrData as $strData){ 
      Silk\Logger::Log('Received data: ' . $strData); 
      $strSubstring = substr($strData, 0, 1); 
      $blnPossibleXML = $strSubstring == '<' ? true : false; 
      $blnPossibleGame = $strSubstring == '%' ? true : false; 
      if($blnPossibleXML === false && $blnPossibleGame === false){ 
       throw new Exceptions\HandlingException('Bad client detected!'); 
      } 
      $blnPossibleXML ? 
      $this->handleXMLData($strData, $objClient): 
      $this->handleGameData($strData, $objClient); 
     } 
     unset($arrData); 
    } 

答えて

0

PHP Catchable fatal error: Argument 1 passed to Sweater\Server::leaveTable() must be of the type array, string given, called in /usr/share/nginx/Sweater/Sweater/GameHandler.php on line 208 and defined in /usr/share/nginx/Sweater/Sweater/GameHandler.php on line 184

はあなたがGameHandler.php handleLeaveTable:

では、文字列

$intPlayer = $arrData[0]; 
$this->leaveTable($intPlayer); // Line 208 

ある最初の要素を取るあなたが最初に取ります配列を構成する要素

そしてGameHandler.php leaveTable:

にあなたはだから私は$ objClientで$ arrDataを切り替えたり、$ arrDataを削除する必要があります配列としてその要素にアクセスして、第五要素

+0

を取るしようとしていますか? – SunleafStudios

+0

'$ arrData'には何が入っていますか? –

+0

私はあなたのためにそれを見て、私の質問を編集します。つかまっている! – SunleafStudios

関連する問題