[英]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
编辑 :您的下一个条件语句受以下事实的困扰:看来您正在遇到Variable Scope问题。 基本上,为了访问$testnumber
变量,您需要在条件块的“作用域”之外定义它。
$testnumber = 0;
if (($rowcount1 == ...
尽管超出了问题的范围:根据您在此处提供的内容,可能有必要查看关于array
s的PHP文档 ,这将在您开始扩展代码时极大地帮助您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.