繁体   English   中英

PHP中的本地/全局变量

[英]Local/Global vars in PHP

我是新手 我有几个表来存储表单,并且我希望将下一个用户输入的表存储在响应最少的表中(每个表单都不同)。

我已经从sql数据库中获取了行数,并且它们正在工作。 我使用下面的代码来检测有多少响应,因此相应地设置了$ testnumber。

代码失败。 本质上,当我回显$ testnumber时,行计数的值无关紧要,它只是根据第一个if语句随机化。

当我删除第一个if语句时,我收到一条错误消息,指出$ testnumber是未定义的,与rowcounts的值无关。

我绝对糊涂了。 在我看来,var $ testnumber在所有语句中都是局部的(它们未在其他地方定义),因此它们应该全部起作用或不起作用。

我将不胜感激。 我知道我的if语句很糟糕,不能涵盖所有情况,因此这里的任何帮助都是有用的,但是最重要的是,您能否解释为什么我的其他语句被忽略以及为什么第一个语句不是?

谢谢

if ($rowcount1 = $rowcount2 = $rowcount3 = $rowcount4){ // if all rowcounts are equal
    $testnumber = mt_rand(1,4);
}

if ($rowcount1 < $rowcount2){ //rowcount for 1 is lowest
    if($rowcount1 < $rowcount3){
        if($rowcount1 < $rowcount4){            
        $testnumber = 1;
        }
    }
};

if ($rowcount2 < $rowcount1){ // rowcount for 2 is lowest
    if($rowcount2 < $rowcount3){        
        if($rowcount2 < $rowcount4){            
        $testnumber = 2;    

        }
    }
};

if ($rowcount3 < $rowcount1){ // rowcount for 3 is lowest
    if($rowcount3 < $rowcount2){    
        if($rowcount3 < $rowcount4){    
        $testnumber = 3;    
        }
    }
};

if ($rowcount4 < $rowcount1){ //rowcount for exp2 is lowest 
    if ($rowcount4 < $rowcount2){   
        if ($rowcount4 < $rowcount3){       
        $testnumber = 4;
        }
    }
};

回声“最终测试号:”。 $ testnumber;

您的第一个比较语句根本不是一个比较:single = 设置变量,double ==测试是否相等。 因此,您的条件将始终取值为TRUE ,因为它可以正确设置变量。

最重要的是,您需要扩展语句,因为相等比较在PHP中无法通过这种方式进行。

if (($rowcount1 == $rowcount2) && ($rowcount2 == $rowcount3) && ($rowcount3 == $rowcount4)){ // if all rowcounts are actaully equal

查看相关的PHP文档: 赋值运算符比较运算符


编辑 :您的下一个条件语句受以下事实的困扰:看来您正在遇到Variable Scope问题。 基本上,为了访问$testnumber变量,您需要在条件块的“作用域”之外定义它。

$testnumber = 0;
if (($rowcount1 == ...

尽管超出了问题的范围:根据您在此处提供的内容,可能有必要查看关于array sPHP文档 ,这将在您开始扩展代码时极大地帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM