如何创建PHP切换?每次调用此函数时,我总能得到相同的结果。我认为问题在于在一开始就初始化变量,但你不能有一个非初始化的会话变量......
$_SESSION['trigger'] = 0;
function trig()
{
if($_SESSION['trigger'] == 1)
$_SESSION['trigger'] = 0;
else if($_SESSION['trigger'] == 0)
$_SESSION['trigger'] = 1;
else
$_SESSION['trigger'] = 'N/A';
//echo the result of $_SESSION['trigger'] outside of the function.
}
答案 0 :(得分:1)
您可以有条件地执行初始化:
if (!isset($_SESSION['trigger'])) {
$_SESSION['trigger'] = 0;
}
或者在trig()
函数中检测它的存在:
function trig()
{
$old = isset($_SESSION['trigger']) ? (int)$_SESSION['trigger'] : 0;
$_SESSION['trigger'] = 1 - $old;
}
答案 1 :(得分:0)
在脚本开头初始化变量时,您将覆盖任何先前的值,并始终从trig()
获得相同的结果。
相反,首先检查是否存在'trigger'键;如果已设置,请运行检查。如果未设置,请将其初始化。这样的事情应该会有所帮助:
if (array_key_exists('trigger', $_SESSION)) {
trig();
}
else {
$_SESSION['trigger'] = 0;
}
另外,我假设你有比你在这里发布的脚本更多的脚本,但如果没有,请务必在尝试访问$ _SESSION超全局之前调用session_start()
。
答案 2 :(得分:0)
这样做:
...
$trigger = (isset($_SESSION['trigger'])) ? $_SESSION['trigger'] : 0;
...
function trig($trigger)
{
switch($trigger){
case 1:
$trigger = 0;
break;
case 0:
$trigger = 1:
break;
default:
$trigger = 'N/A';
break;
}
$_SESSION['trigger'] = $trigger;
return true;
}
...
trig($trigger);