2017-08-24 12 views
1

Ich habe etwas Code in PHP erstellt und die Protokolle meines Servers zeigen weiterhin die folgenden Fehler. Der Code sind Handler für ein Spiel, das ich erstellt habe. Ich habe versucht, sie zu beheben, indem ich die "Fixes" recherchierte und anwendete, aber es lief nicht gut.PHP Hinweis: Undefinierte Indexfehler

Undefinierte Index: a # jt in /usr/share/nginx/Sweater/Sweater/GameHandler.php auf Leitung 160 Undefinierte Index: a # jt in /usr/share/nginx/Sweater/Sweater /GameHandler.php auf Leitung 161 Undefinierte Index: a # jt in /usr/share/nginx/Sweater/Sweater/GameHandler.php auf Leitung 167 Undefinierte Index: a # lt in/usr/share/nginx/Sweater /Sweater/GameHandler.php on line 227

der Versuch, auf der Linie in /usr/share/nginx/Sweater/Sweater/GameHandler.php Eigenschaft von nicht-Objekt zu erhalten 30 Dieses 2

ist der Code für sie:

function handleJoinTable(Array $arrData, Client $objClient) { 
    $intPlayer = $arrData[4]; 
    $tableId = $arrData[2]; 
    $strUsername = $this->objDatabase->getUsername($intPlayer); 
    $seatId = count($this->tablePopulationById[$tableId]) - 1; // Line 160 
    if($this->gamesByTableId[$tableId] === null) { // Line 161 
     $findFourGame = new FindFour(); 
     $this->gamesByTableId[$tableId] = $findFourGame; 
    } 
    $this->tablePopulationById[$tableId][$strUsername]; // Line 167 
    $seatId += 1; 
    $objClient->sendXt('jt', $objClient->getIntRoom(), $tableId, $seatId); 
    $objClient->sendXt('ut', $objClient->getIntRoom(), $tableId, $seatId); 
    $this->playersByTableId[$tableId][] = $intPlayer; 
    $this->tableId = $tableId; 
} 


function handleLeaveTable(Array $arrData, Client $objClient) { 
     $intPlayer = $arrData[2]; 
     $tableId = $arrData[3]; 
     $strUsername = $this->arrClientsByID[$intPlayer]; // Line 227 
     unset($objClient->arrPlayer[$intPlayer]); 
     $objClient->sendXt('lt', $objClient->getIntRoom(), $strUsername); 
    } 

function handleGetGame(Array $arrData, Client $objClient) { 
    $intPlayer = $arrData[3]; 
    if($objClient->getExtRoom() == 802) { 
     $puckData = $this->rinkPuck; 
     $objClient->sendXt('gz', $objClient->getIntRoom(), $puckData); 
    } elseif($intPlayer->tableId !== null) { // Line 302 
     $tableId = $intPlayer->tableId; 
     $playerUsernames = array_keys($this->tablePopulationById[$tableId]); 
     @list($firstPlayer, $secondPlayer) = $playerUsernames; 
     $boardString = $this->gamesByTableId[$tableId]->convertToString(); 
     $objClient->sendXt('gz', -1, $firstPlayer, $secondPlayer, $boardString); 
    } 
} 

Was ist hier los?

+0

Bitte sagen Sie uns speziell, was die Zeilen des Codes sagen. Ein Array-Schlüssel fehlt, über den gesprochen wird, und der andere Fehler ist, dass Sie keine Instanz einer Klasse haben, also können Sie auf keine der Eigenschaften zugreifen! – delboy1978uk

+0

Ich habe im Code, in dem das Problem auftritt, Kommentare hinzugefügt. – SunleafStudios

+0

Schauen Sie sich ['isset'] an (http://php.net/manual/en/function.isset.php). Ihre Schecks scheinen fehlerhaft zu sein (161). Überprüfe, ob 'tableId' das ist, was du denkst. – ficuscr

Antwort

0

$this->tablePopulationById[$tableId]

tablePopulationById ist ein Array, das einen Schlüssel Index $ TableID nicht enthält.

$arrData[3]; Enthält KEINE Objekte der Klasse, die Sie erwartet haben!

In beiden Fällen var_dump sie zu sehen, was Sie haben!

var_dump($this->tablePopulationById); 
var_dump($arrData); 
Verwandte Themen