简单!但是哪个条件陈述有效

时间:2011-03-28 23:46:32

标签: php if-statement

简单但这一直困扰着我。条件陈述的最佳方式是哪种?

$foo = '1';

if($foo === '1' || $foo === '2' || $foo === '3')
{
// foo matches 
}

or 

if($foo === '1' || '2' || '3')
{
// foo matches
}

哪一步有效,哪个更好。有更好的解决方案吗?

4 个答案:

答案 0 :(得分:4)

第二个版本将始终评估为true。

如果您想要针对多种替代方案进行比较,请使用:

if (in_array($foo, array('1', '2', '3') )) {

如果您想要与确切的比较===完全匹配,那么您需要:

if (is_string($foo) && in_array($foo, array(...))) {

答案 1 :(得分:2)

$foo = 1;

if(in_array($foo, array(1, 2, 3))){
    //foo matches 
}

答案 2 :(得分:2)

这是另一种选择:

if($foo>0 && $foo<4){

}

答案 3 :(得分:1)

第二个if语句不起作用。 PHP不像那样工作。在if语句中单独使用0以外的任何数字(包括否定数)都会为true。这就是为什么你可以做if(count($array))之类的事情而不指定count($array)必须大于0。

就像你说过的那样:

if($foo === 1)
{}
elseif(2)  //This will always trigger if $foo !== 1.  
{}
elseif(3)  //This will never trigger because of the last one
{}

每个条件都是它自己的条件。而不是将其视为“或”或“和”将其读作“或如果”和“如果”。所以if $foo is 1 or if 2 or if 3代替if $foo is 1 or 2 or 3

如果它只是数字,那么amosrivera的解决方案是最好的。如果是其他类型的数据,那么webarto / mario有一个很好的解决方案。