Php 更简单的IF语句

Php 更简单的IF语句,php,if-statement,Php,If Statement,我刚刚写了这篇文章,我想一定有一个更简单/更干净的方法来做这件事,因为这样做看起来很糟糕: if(isset($_GET['m']) && isset($_GET['v'])) { Router::Get($_GET['m'], $_GET['v']); } elseif(isset($_GET['m'])) { Router::Get($_GET['m'], ""); } else { Router::Get("", ""); } 我在寻找一种更干净的

我刚刚写了这篇文章,我想一定有一个更简单/更干净的方法来做这件事,因为这样做看起来很糟糕:

if(isset($_GET['m']) && isset($_GET['v'])) {
    Router::Get($_GET['m'], $_GET['v']);
} elseif(isset($_GET['m'])) {
    Router::Get($_GET['m'], "");
} else {
    Router::Get("", "");
}
我在寻找一种更干净的方式,比如:

Router::Get(is('m'), is('v'));
有没有缩短/清除此类if语句的建议?

可以

$m = isset($_GET['m']) ? $_GET['m'] : "";
$v = isset($_GET['v']) ? $_GET['v'] : "";
Router::Get($m, $v);

您可以封装逻辑:

Router::$query = $_GET;
Router::Get('m', Router::Get('v'))

class Router {
    static public $query;
    static function Get($name, $default = '') {
        return isset(self::$query[$name]) ? self::$query[$name] : $default;
    }
}

你要找的是一种叫做三元运算符的东西。下面的链接介绍了三元运算符的一些重要用途<代码>http://davidwalsh.name/php-shorthand-if-else-ternary-operatorsUnrelated:如果您将多个参数传递给
isset()
,如果所有参数都已设置,它将返回
TRUE
。路由器::Get(isset($\u-Get['m'])?$\u-Get['m']:“”,isset($\u-Get['v'])?$\u-Get['v']:“”);这可能是最干净的了+1我确实也在考虑同样的问题,但在
Router::Get()
函数中没有解决方案?@JoranDenHouting您可以内联
isset
检查,但这不会使它更干净。因为您在这里处理的是原始输入,所以您的首要任务应该是检查您的输入。路由器::Get(isset($u Get['m'])?$u Get['m']:“”,isset($u Get['v'])?$u Get['v']:“”)@拉斐尔巴罗斯:这是一个变量(我猜是一个打字错误)。你可能看到了答案的旧版本。已经修好了!这正是我所寻找的,干净和简单的解决方案!谢谢Meze的宝贵意见。