0

我想通过使用 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

4 回答 4

2

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

if(in_array($expid,array('3606','3660','3661','3662','3684','3685')))
{
于 2013-03-29T07:39:26.983 回答
0

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

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

于 2013-03-29T07:38:19.940 回答
0
if($expid=='3606' || $expid=='3660' || $expid=='3661' || $expid=='3662' || $expid=='3684' || $expid=='3685')
    { 
        $exp='1';
    }

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

于 2013-03-29T07:38:42.543 回答
0

你需要做这样的事情。您的 OR 语句只是一个字符串。“3660”永远是真的。您必须执行 $expid==3660,所有其他 OR 子句也是如此。

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

于 2013-03-29T07:40:13.360 回答