我正在做php上的tictactoe for homework,我坚持从播放器到播放器的逻辑,因为它总是在单元格上放置一个X,并且每当提交按钮被击中时都不会更改为O.我的问题是如何让它发挥作用。
到目前为止我的目的是:
$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
我一直在寻找答案,但我找到了Initialize the variable only once in php,但是当我将其应用到我的php代码时,它无法正常工作。如果有人得到解决方案,我会非常感激。
答案 0 :(得分:0)
使用else
而不是其他if
,因为第二个if
您将恢复为原始值。目前你遇到一个TRUE条件链,每个条件都满足,所以你最终得到最后一个条件的值。您可以在此处查看代码的粗略演示,https://3v4l.org/Lv7CK。
这应该纠正你的逻辑。
$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
(这假设在那里)如果有多个使用$player
,或者可能是elseif
,则switch
只有两个值。