if(isset($_GET['a']) || isset($_GET['b']) || isset($_GET['c'])){
if(($_GET['a'] || $_GET['b'] || $_GET['c']) == "x"){
echo "YES";
} else {
echo "NO";
}
}
在这个PHP代码中,我正在尝试检查其中一个请求isset
以及其中一个是否值== 'x'
,但第二部分if(($_GET['a'] || $_GET['b'] || $_GET['c']) == "x")
没有按照预期工作,我把它包裹在()
里面,希望它能起作用,在这种情况下,我是否必须像isset()
部分那样将它分开?还是有更好的方法来做到这一点?
答案 0 :(得分:3)
这可能就是你要找的东西
更新 - 我刚刚将||
更改为&&
以获取最后一个条件,以便您快速试用。
if( (isset($_GET['a']) && $_GET['a'] == "x") || (isset($_GET['b']) && $_GET['b'] == "x") || (isset($_GET['c']) && $_GET['c'] == "x")){
echo "YES";
} else {
echo "NO";
}
答案 1 :(得分:0)
如果你必须编写很多条件,你可以使用以下方法之一:
使用foreach和条件:
$either_abc_is_x = function() {
$keys = ['a','b','c'];
foreach($keys as $key)
if(isset($_GET[$key]) && $_GET[$key] == "x")
return true;
return false;
};
echo $either_abc_is_x() ? 'YES' : 'NO';
使用带条件的数组过滤器:
$get_abc_keys_equal_to_x = array_filter(['a','b','c'], function($v) {
return isset($_GET[$v]) && $_GET[$v] == 'x';
});
echo $get_abc_keys_equal_to_x ? 'YES' : 'NO';
阵列体操:
$either_abc_is_x = isset($_GET) && in_array('x', array_intersect_key($_GET, array_flip(['a','b','c'])));
echo $either_abc_is_x ? 'YES' : 'NO';