我在if语句php出错了哪里?

时间:2013-03-30 20:46:15

标签: php if-statement

需要一些帮助,总是得到最后一个值188490?

if(isset($_POST['zapremina']) and is_numeric($_POST['zapremina']))
        {   
if ($_POST['zapremina']<=1050)
$_POST['zapremina']=1030;
if (($_POST['zapremina']>=1151) and ($_POST['zapremina']<=1300));
$_POST['zapremina']=2010;
if (($_POST['zapremina'] >= 1301) and ($_POST['zapremina'] <= 1600));
$_POST['zapremina']=4400;
if (($_POST['zapremina'] >= 1601) and ($_POST['zapremina'] <= 2000));
$_POST['zapremina']=9110;
if (($_POST['zapremina'] >= 2001) and ($_POST['zapremina'] <= 2500));
$_POST['zapremina']=45000;
if (($_POST['zapremina'] >= 2501) and ($_POST['zapremina'] <= 3000));
$_POST['zapremina']=91200;
if ($_POST['zapremina'] > 3001);
$_POST['zapremina']=188490;
        }
else
$_POST['zapremina']=0;

我认为这是一个小错误,有人知道吗,提交日志

4 个答案:

答案 0 :(得分:2)

是的,你需要做else if

if ($_POST['zapremina']<=1050)
    $_POST['zapremina']=1030;
else if (($_POST['zapremina']>=1151) and ($_POST['zapremina']<=1300))
    $_POST['zapremina']=2010;
else if (($_POST['zapremina'] >= 1301) and ($_POST['zapremina'] <= 1600))
    $_POST['zapremina']=4400;

至于原因:您正在检查您的变量,然后将其设置为另一个值,该值往往高于您在分配后检查的任何值。

所以任何高于最终产生188490的东西。

其他意味着:在第一场比赛时停止比较。

此外,您需要删除if语句后的;,因为;表示:End of operation。在这种情况下,它意味着End of If ......这反过来意味着,下一行总是会被执行,你的变量的值在这一点上甚至不再重要。

答案 1 :(得分:0)

删除; [semicolon]在每个if语句的末尾,如果在当前场景中使用了梯形图,则使用其他方法

答案 2 :(得分:0)

if(isset($_POST['zapremina']) and is_numeric($_POST['zapremina']))
        {   
if ($_POST['zapremina']<=1050)
$zapremina=1030;
if (($_POST['zapremina']>=1151) and ($_POST['zapremina']<=1300))
$zapremina=2010;
if (($_POST['zapremina'] >= 1301) and ($_POST['zapremina'] <= 1600))
$zapremina=4400;
if (($_POST['zapremina'] >= 1601) and ($_POST['zapremina'] <= 2000))
$zapremina=9110;
if (($_POST['zapremina'] >= 2001) and ($_POST['zapremina'] <= 2500))
$zapremina=45000;
if (($_POST['zapremina'] >= 2501) and ($_POST['zapremina'] <= 3000))
$zapremina=91200;
if ($_POST['zapremina'] > 3001)
$zapremina=188490;
        }
else
$zapremina=0;

答案 3 :(得分:0)

我发现至少有两个错误:
1)几乎每个if语句代码行后面都有分号(;)。这样,这些语句甚至不会影响任何内容,并且您的POST变量设置为六次 2)您将POST变量设置为新的(更高)值,然后使用这个新的更高的值进行检查,这不是您想要实现的值。

另外 - 正如数据已经说过的那样 - 避免写入POST变量。