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

时间:2012-10-20 00:51:30

标签: php get

  

可能重复:
  How to check if $_GET is empty?

我正在尝试检查我的网址$_GET中是否有?var=foo&biz=bang个数据的情况,而我目前用来执行此操作的if语句是{{ 1}},但即使在我的网址中任何地方都没有任何isset($_GET) //Do something?,它也会返回。我假设&变量始终设置,那么我该如何检查呢?

Duplicate of "How to check if $_GET is empty?"

3 个答案:

答案 0 :(得分:7)

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

您想使用:

if ($_GET) {
}

这是因为$ _GET是一个数组,一个空数组将被评估false,而一个填充的数组是true


更新

我不再使用上述方法,因为它对可测试性和CLI运行命令(phpunitartisan)产生了负面影响。

我现在总是检查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
}

答案 1 :(得分:4)

if(!empty($_GET))
{
    // do something
}

这应该让你知道是否填充了get数组

答案 2 :(得分:0)

使用empty()可能会有问题,因为它会返回true 0,0.00,false和其他(http://php.net/manual/en/function.empty.php)

可能的解决方法:

<?php
function is_blank($value) {
    return empty($value) && !is_numeric($value);
}
if (!is_blank($_GET)){
   ... do your thing ...
}

?>

或检查特定的帖子值isset($_POST['value'])