我想通过使用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';
}
}
?>
答案 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')