2016-01-08 3 views
-1

Я получаю следующие ошибки и не знаю, как действовать.PHP: Fatal Error: Позвонить победителю функции участника() по нуле

Warning: Creating default object from empty value in /Applications/XAMPP/xamppfiles/htdocs/ACIT4850_lab1/index.php on line 32

Notice: Undefined variable: game­ in /Applications/XAMPP/xamppfiles/htdocs/ACIT4850_lab1/index.php on line 17

Fatal error: Call to a member function winner() on null in /Applications/XAMPP/xamppfiles/htdocs/ACIT4850_lab1/index.php on line 17

Вот что у меня есть

<body> 
    <?php 
     // put your code here 
     $squares = $_GET['board']; 
     $game = new Game($squares); 
     if ($game­->winner('x'))   // line 17 
      echo 'You win. Lucky guesses!'; 
     else if ($game­->winner('o')) 
      echo 'I win. Muahahahaha'; 
     else 
      echo 'No winner yet, but you are losing.'; 
    ?> 
</body> 

и

<?php 
class Game { 
    var $position = '---------'; 

    function __construct($squares) { 
     $this­->position = str_split($squares); // line 32 
    } 

    function winner($token) { 
     $won = false; 
     $result = false; 

     for($row=0; $row<3; $row++) { 
      if (($this->$position[3*$row] == $token) && 
       ($this->$position[3*$row+1]== $token) && 
       ($this->$position[3*$row+2] == $token)) 
        $result = true; 
     } 
     ... 

     if ($result == true) 
      $won = true; 

     return $won; 
    } 
}?> 

любая помощь была бы оценена.

+2

ваш игровой класс не был найден. –

+1

Я предполагаю, что вы куда-то включаете файл класса 'Game'? –

+0

Включен класс 'Game'. –

ответ

0

ошибка происходит потому, что у вас есть странный символ в этой строке

$this­->position = str_split($squares); // line 32 

персонаж \ u00ad

и у вас есть все над кодом, как: $ что-то \ u00ad->

попробовать с этой строкой кода

$this->position = str_split($squares); // line 32 

в стороне от этого у вас есть ошибки в этой части т он код

for($row=0; $row<3; $row++) { 
    if (($this->$position[3*$row] == $token) && 
      ($this->$position[3*$row+1]== $token) && 
      ($this->$position[3*$row+2] == $token)) 
      $result = true; 

}

вы используете

$this->$position 

и вы должны использовать

$this->position 
+0

Хорошо, предупреждение в строке 32 ушло. Но у меня все еще есть фатальная ошибка в строке 17. И как вы смогли определить, что у меня странный символ? Я использую CodeLite, и он просто показывает это как пространство. –

+0

Я приклеил ваш код здесь .... https://www.branah.com/unicode-converter, потому что, когда вы смотрите код, который вы вставляете в SO, он не показывает пробела (char получает scaped браузером), выглядит нормально , но когда вы вставляете его в IDE, он показывает пробелы, поэтому .... я думал, что что-то нехорошо и пробовал ... –

Смежные вопросы