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 と評価される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' は常に true になります。$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 に答える