简单但这一直困扰着我。条件陈述的最佳方式是哪种?
$foo = '1';
if($foo === '1' || $foo === '2' || $foo === '3')
{
// foo matches
}
or
if($foo === '1' || '2' || '3')
{
// foo matches
}
哪一步有效,哪个更好。有更好的解决方案吗?
答案 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有一个很好的解决方案。