我经常发现自己写的是if($var == 'bob' || $var == 'steven || $var == 'james'){ ...
在php中是否有一种更流畅的方式来检查var是否与任何运算符匹配?或者我必须编写自己的函数,如:
function matches_any($question, $pos_answer, $pos_answer, $pos_answer, $pos_answer, ...){
// Call the function args, get the first one, get the rest, compare all the rest, return true if any match, return false by default.
}
因此将使用:
if(matches_any($var, $bob, $steven, 'james', $william)){ ...
答案 0 :(得分:7)
您可以使用in_array()
if(in_array('value_to_test', array($var, $bob, $steven, 'james', $william))) {}
$matches = array($var, $bob, $steven, 'james', $william);
if (in_array('james', $matches)) {
// TRUE
}
答案 1 :(得分:3)
理想情况下,您应该避免将任何值硬编码到代码中 - 如果您将内容保留在数据结构中(=思考'配置'或'数据库'),您将最大限度地减少遇到此问题的机会,因为您是处理抽象而不是特定值。这意味着将你的概念从“这些能够做到这一点的明确的人”变成“让我们问另一个设施这个人是否可以做到这一点”
如果你绝对肯定必须有你所描述的功能,你可以使用func_get_args():
function matches_any()
{
$haystack = func_get_args();
$needle = array_shift( $haystack );
return in_array( $needle, $haystack );
}
(未测试的)