PHP如果URL仅包含某个参数

时间:2016-11-10 15:29:48

标签: php url parameters get

我知道我可以使用以下内容查看URL中是否存在参数p。但是,如果还有q,t,r等参数

,这也会有效
  

if(isset($ _ GET ['p'])){}

我也知道以下是否有任何参数集

  

if(count($ _ GET)){}

但我需要的是:

如果只有参数p存在 - >做某事......否则,如果参数p存在且存在任何其他参数,则执行其他操作...如果参数!= p,或者不存在参数,则执行其他操作 - 执行其他操作

任何提示都会非常感激

4 个答案:

答案 0 :(得分:1)

if(isset($_GET['p']) && count($_GET['p']) == 1){
//do something
} else if (isset($_GET['p'])){
//do something
} else {
//do something else
}

答案 1 :(得分:0)

这显然是你在寻找的东西:

<?php
// ...
if ((count($_GET) === 1) && isset($_GET['p'])) {
  // GET argument 'p' exists and is the only one
} elseif (isset($_GET['p']) {
  // GET argument'p' exists
} else{
  // GET argument'p' does _not_ exist
} 

答案 2 :(得分:0)

$wantedKeys = ['p'];

if (array_diff_key($_GET, array_flip($wantedKeys))) {
    echo 'keys other than ', join(', ', $wantedKeys), ' are in $_GET';
}

这可以扩展到任意数量的通缉键 结合&#34;需要所有人而不是其他人#34;:

if (
    count(array_intersect_key($_GET, array_flip($wantedKeys))) == count($wantedKeys)
    && !array_diff_key($_GET, array_flip($wantedKeys))
) {
    echo 'only the keys ', join(', ', $wantedKeys), ' are in $_GET';
}

答案 3 :(得分:0)

以下是嵌套if的替代解决方案(可能表现更好):

<?php

if (isset($_GET['p'])) { # If parameter p exists
    if (count($_GET) == 1) { # If only p exists
        // Do something
    } else { # If other parameters exist
        // Do something else
    }
} else { # If p doesn't exist
    // Do yet something else
}