Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php if语句中的变量作用域_Php - Fatal编程技术网

Php 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语句之外的变量时遇到问题

 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中的变量没有块作用域。如果输入了初始的
如果
块,那么随后的变量将被定义并可用。噢,哇,我怎么会错过这个!感谢堆..感谢帮助,将编辑问题。