Php if语句中的变量作用域
我在访问if语句之外的变量时遇到问题Php if语句中的变量作用域,php,Php,我在访问if语句之外的变量时遇到问题 if ($_SESSION['Yesvotes'] = 0) { $finaltime = ""; $timenow = time(); $timelimit = 2; $timelimitunix = ((($timelimit)*60)*60); $finaltime = $timelimitunix + $timenow; echo $finaltime; } if (iss
if ($_SESSION['Yesvotes'] = 0) {
$finaltime = "";
$timenow = time();
$timelimit = 2;
$timelimitunix = ((($timelimit)*60)*60);
$finaltime = $timelimitunix + $timenow;
echo $finaltime;
}
if (isset($_POST['buttonyes'])) {
if (time() > $finaltime) {
echo "TIME DONE";
} else {
}
}
由于某种原因,变量$finaltime在第三个if语句中未定义,我似乎无法解释原因
有什么想法吗
谢谢你们的帮助。我还遇到了一个新问题
如果(isset($_POST['buttonyes']))
{
if (($_SESSION['Yesvotes'] == 0 && $_SESSION['Novotes'] == 0))
{
$timenow = time();
$timelimit = $_SESSION['Qtime'];
$timelimitunix = ((($timelimit)*60)*60);
$finaltime = $timelimitunix + $timenow;
}
if(time() > $finaltime)
{
echo " THERE IS NO TIME LEFT TO VOTE";
}
else
{
//INCREMENT VOTES
if (($_SESSION['Yesvotes'] == 0 && $_SESSION['Novotes'] == 0))
{
$timenow = time();
$timelimit = $_SESSION['Qtime'];
$timelimitunix = ((($timelimit)*60)*60);
$finaltime = $timelimitunix + $timenow;
$_SESSION['timecomplete'] = $finaltime;
}
if(time() > $_SESSION['timecomplete'])
{
echo " THERE IS NO TIME LEFT TO VOTE";
}
else
{
当代码再次运行且投票为是/否!=0时,变量$finaltime似乎不再可用。我假设这是因为时间函数没有再次运行
无需修正
如果(isset($_POST['buttonyes']))
{
if (($_SESSION['Yesvotes'] == 0 && $_SESSION['Novotes'] == 0))
{
$timenow = time();
$timelimit = $_SESSION['Qtime'];
$timelimitunix = ((($timelimit)*60)*60);
$finaltime = $timelimitunix + $timenow;
}
if(time() > $finaltime)
{
echo " THERE IS NO TIME LEFT TO VOTE";
}
else
{
//INCREMENT VOTES
if (($_SESSION['Yesvotes'] == 0 && $_SESSION['Novotes'] == 0))
{
$timenow = time();
$timelimit = $_SESSION['Qtime'];
$timelimitunix = ((($timelimit)*60)*60);
$finaltime = $timelimitunix + $timenow;
$_SESSION['timecomplete'] = $finaltime;
}
if(time() > $_SESSION['timecomplete'])
{
echo " THERE IS NO TIME LEFT TO VOTE";
}
else
{
$\u会话['Yesvotes']=0
^这就是原因。您正在赋值,而不是比较。因此,如果条件始终为false。结果?您的
finaltime
变量从未设置。您可以做的是,在该条件上方定义finaltime
,并用默认值初始化它。请查看该=是赋值运算符。因此,此语句将始终返回true:
if ($_SESSION['Yesvotes'] = 0)
您应该使用逻辑运算符==代替
if ($_SESSION['Yesvotes'] == 0)
问题可能是没有设置Yesvotes 反正用
$_SESSION['Yesvotes'] == 0
而不是
$_SESSION['Yesvotes'] = 0
在这里,变量被视为该循环的局部变量。 需要实例化要在整个程序中使用的全局变量 尝试以下方法。这可能是最简单的解决方案。 你仍然面临任何问题,评论
$finaltime = "";
if ($_SESSION['Yesvotes'] = 0)
{
$timenow = time();
$timelimit = 2;
$timelimitunix = ((($timelimit)*60)*60);
$finaltime = $timelimitunix + $timenow;
echo $finaltime;
}
if(isset($_POST['buttonyes']))
{
if(time() > $finaltime)
{
echo "TIME DONE";
}
else
{....
oops.will会解决这个问题。PHP中的变量没有块作用域。如果输入了初始的
如果块,那么随后的变量将被定义并可用。噢,哇,我怎么会错过这个!感谢堆..感谢帮助,将编辑问题。