繁体   English   中英

PHP可捕获的致命错误:传递给参数1的类型必须为数组类型,给定为null,在第208行调用并定义

[英]PHP Catchable fatal error: Argument 1 passed to must be of the type array, null given, called in on line 208 and defined

我一直面临着一个无法解决的怪异问题。 长话短说,当我在自己创建的游戏中加入迷你游戏时,一切都很好! 但是当我退出迷你游戏时,它应该把我送回房间,但是却给了我一个错误。

这是错误:

PHP可捕获的致命错误:传递给Sweater \\ Server :: leaveTable()的参数1必须为数组类型,给定字符串,在第208行的/usr/share/nginx/Sweater/Sweater/GameHandler.php中调用,并在/中定义第184行的usr / share / nginx / Sweater / Sweater / GameHandler.php

在问这个问题之前,我做了一些研究,并尝试了遇到的解决方案,但遗憾的是它们没有用。

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是什么:

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);
    }

PHP可捕获的致命错误:传递给Sweater \\ Server :: leaveTable()的参数1必须为数组类型,给定字符串,在第208行的/usr/share/nginx/Sweater/Sweater/GameHandler.php中调用,并在/中定义第184行的usr / share / nginx / Sweater / Sweater / GameHandler.php

$arrData ,获取第一个元素,它是字符串

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

GameHandler.php handleLeaveTable:

您将第一个元素形成数组

然后在GameHandler.php leaveTable:GameHandler.php leaveTable:

您正在尝试将该元素作为数组访问,然后采用第5个元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 可捕获的致命错误:传递给…的参数1必须是…的一个实例,为boolean给定,在…上在…中调用,并在…上在第在线 Modx:可捕获的致命错误:传递给modParser :: collectElementTags()的参数2必须为数组类型,给定为null 切换表时出现zend db错误可捕获的致命错误:传递给__construct()的参数1必须是一个数组,给定对象,在 可捕获的致命错误:传递给...的参数1必须是...,给定数组的实例 可捕获的致命错误:传递给UsernamePasswordToken :: __ construct()的参数4必须是一个数组,给定null 可捕获的致命错误:传递给 Illuminate\\Config\\Repository::__construct() 的参数 1 必须是数组类型,给定整数 类型错误:传递给PayPal \\ Rest \\ ApiContext :: setConfig()的参数1必须是数组类型,给定为null,在第40行的PaymentController.php中调用 可捕获的致命错误:传递给Controller :: __ construct()的参数1必须是Doctrine \\ ORM \\ EntityManager的实例,未给出任何实例,称为 可捕获的致命错误:传递给Doctrine \\ DBAL \\ Connection :: update()的参数3必须为数组类型,在symfony2 update中没有给出 可捕获的致命错误:传递给Foo :: bar()的参数1必须实现接口BazInterface,null给出
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM