PHP - 检查是否设置了任何GET数据

Kev*_*eal 2 php get

可能重复:
如何检查$ _GET是否为空?

我正在尝试检查$_GET我的网址中是否有任何数据的条件?var=foo&biz=bang,而if我目前用来执行此操作的语句是isset($_GET) //Do something,但即使我的网址中没有任何地方?&任何地方,它也会返回.我假设$_GET变量总是设置,所以我该如何检查?

复制"如何检查$ _GET是否为空?"

wil*_*ler 7

由于$ _GET 总是 在php中设置(在网络服务器中运行时),你真正想知道的是"那里有什么东西吗?"

你想用:

if ($_GET) {
}
Run Code Online (Sandbox Code Playgroud)

这是因为$ _GET是一个数组,并且将计算一个空数组false,而填充数组则是true.


UPDATE

我不再使用上述方法,因为它对可测试性和CLI运行命令(phpunit,artisan)有实际负面影响.

我现在经常检查isset()$_GET阵列.我通常也会在if- php中分配一个数组,将这些表达式计算为赋值变量的值.

如果您的框架具有"安全阵列访问"功能,则应始终使用它.如果你的框架有一个"安全的GET功能",那就更好了.如果您没有使用框架,或者您的框架不包含这些帮助函数,您应该自己编写它们.

// example with "safe array access"
if (isset($_GET) && $value = safe_array($_GET, 'key')) {
    // do something with $value
}

// example with "safe GET function"
if ($value = safe_input_get('key')) {
    // do something with $value
}
Run Code Online (Sandbox Code Playgroud)