2017-11-12 9 views
-1

私は宿題のためにPHPでtictactoeをやっていますが、プレイヤーからプレイヤーに変わるロジックにはまっています。なぜなら、常にXをセルに置き、送信ボタンがヒット。私の質問は、それを動作させる方法です。私はこのために、これまで持って何php session logic error

は次のとおりです。

$position = filter_input(INPUT_GET, 'Position'); 

$player = "C_$position"; 

//Problem 

if(!isset($_SESSION[$player])){ //Also tried the function empty before using !isset 

    $_SESSION[$player]="X"; 
} 
if($_SESSION[$player]=="X"){ 

    $_SESSION[$player]="O"; 
} 

if($_SESSION[$player]=="O"){ 

    $_SESSION[$player]="X"; 
} 
//END PROBLEM 

私は答えを探してきたと私は私のPHPコードに適用して、それは動作しません。しかし、私はこのInitialize the variable only once in phpを見つけました。誰かが解決策を得たら、私はそれを完全に感謝します。

+0

はい私はPHPの冒頭でそれを始めました。私はそこに問題があると思うコードをコピーしました。 – Ben

+0

いいえ私は今出力を行い、probを見ましたが、どちらも常に上書きされています。 – Ben

答えて

0

ifを元の値に戻すため、別のifではなくelseを使用してください。現在、TRUEの条件付きチェーンを実行すると、すべての条件が満たされ、最後の条件付きの値になります。あなたのコードの大まかなデモをここに見ることができます。https://3v4l.org/Lv7CK

これはあなたのロジックを修正するはずです。これは倍数がある場合にのみ、二つの値が$playerのためにそこにあると仮定し(セッションが設定されていない場合

$position = filter_input(INPUT_GET, 'Position'); 
$player = "C_$position"; 
if(empty($_SESSION[$player]) || $_SESSION[$player]=="O"){ 
    $_SESSION[$player]="X"; 
} else { 
    $_SESSION[$player]="O"; 
} 

これはXにプレーヤーを設定しなければならないか、現在のプレイヤーがOであれば、そうでない場合はOにプレーヤーを設定し、 elseif、おそらくはswitch)を使用してください。

+0

ありがとうございました! – Ben