如果是elseif条件

时间:2013-03-29 07:35:30

标签: php

我想通过使用while循环和if条件来显示一系列输出,但这里if条件只能起作用,而elseif和else之类的其他条件不起作用。请帮帮我。

这是我的代码         

    if($expid=='3606' OR '3660' OR '3661' OR '3662' OR '3684' OR '3685')
    { 
        $exp='1';
    }
    elseif($expid=='3607' OR '3608' OR '3612' OR '3620' OR '3621' OR '3622' OR '3623' OR '3624' OR '3625' OR '3626' OR '3636' OR '3646' OR '3647' OR '3648' OR '3649' OR '3650' OR '3651' OR '3652' OR '3653' OR '3654' OR '3655' OR '3656' OR '3657' OR '3658' OR '3659' OR '3605')
    {
        $exp='2';
    }
    elseif($expid=='3609' OR '3610' OR '3611' OR '3613' OR '3614' OR '3615' OR '3616' OR '3617' OR '3618'  OR '3619' OR '3627' OR '3628' OR '3629' OR '3630' OR '3631' OR '3632' OR '3633' OR '3634' OR '3635' OR '3637' OR '3638' OR '3639' OR '3640' OR '3641' OR '3642' OR '3643' OR '3645')
    {
        $exp='3';
    }
    elseif($expid=='3666' OR '3667' OR '3668' OR '3669' OR '3670' OR '3671' OR '3672' OR '3673' OR '3674' OR '3675' OR '3676' OR '3677' OR '3678' OR '3679' OR '3680' OR '3681' OR '3682' OR '3683')
    {
        $exp='4';
    }
    else{
        $exp='5';
    }
}
?>

4 个答案:

答案 0 :(得分:2)

因为你做错了。只需使用in_array代替,以避免混淆。

if(in_array($expid,array('3606','3660','3661','3662','3684','3685')))
{

答案 1 :(得分:0)

$expid=='3606' OR '3660' OR '3661' OR '3662' OR '3684' OR '3685'始终为true,因为'3660'的评估为真。

但您可能需要重新考虑您的逻辑,而不是对这些数字进行硬编码。

答案 2 :(得分:0)

if($expid=='3606' || $expid=='3660' || $expid=='3661' || $expid=='3662' || $expid=='3684' || $expid=='3685')
    { 
        $exp='1';
    }

像这样你评估每个表达式返回true或false

答案 3 :(得分:0)

你需要做这样的事情。你的OR语句只是一个字符串。 '3660'永远都是真的。你必须做$ expid == 3660,所有其他OR条款都是如此。

if($expid=='3606' OR '$expid==3660' OR $expid=='3661' OR $expid=='3662' OR '$expid==3684' OR $expid=='3685')