我知道我可以使用以下内容查看URL中是否存在参数p。但是,如果还有q,t,r等参数
,这也会有效if(isset($ _ GET ['p'])){}
我也知道以下是否有任何参数集
if(count($ _ GET)){}
但我需要的是:
如果只有参数p存在 - >做某事......否则,如果参数p存在且存在任何其他参数,则执行其他操作...如果参数!= p,或者不存在参数,则执行其他操作 - 执行其他操作
任何提示都会非常感激
答案 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
}