【问题标题】:Why on earth do $_GET and $_POST return true when they're empty?为什么 $_GET 和 $_POST 为空时返回 true?
【发布时间】:2014-07-01 11:19:44
【问题描述】:

http://codepad.org/3duGkQZi

我知道如果$var = array()$var 将返回 true,因为即使数组为空,它仍然是一个集合变量。

但是$_GET$_POST不仅仅是数组,它们是PHP生成的数组。

如果没有任何东西可以放入,为什么 PHP 还要设置这些变量?这背后有什么我遗漏的逻辑吗?

【问题讨论】:

  • 因为它们是固定的。
  • 我认为您正在寻找empty(),因为isset() 检查...好吧...是否设置了变量:)
  • 但是如果 PHP 确定这些变量会为空,那么设置这些变量背后的逻辑是什么?
  • @user3650808 没有逻辑。他们只是想让一组变量在任何地方都可用。
  • 超全局变量还不够神奇吗?为什么你希望它们与常规数组有更大的不同?

标签: php arrays post get isset


【解决方案1】:

您应该使用empty() 函数检查它们是否为空,或者使用count() 函数检查元素的数量。

数组总是设置的,问题是:它们是否包含元素?

【讨论】:

    【解决方案2】:
    1. 超全局变量是在所有范围内始终可用的内置变量
    2. $_GET 是一个超全局变量

    因此,$_GET 始终可用。这是语言开发者的决定。

    http://www.php.net/manual/en/language.variables.superglobals.php

    【讨论】:

      【解决方案3】:

      $_GET$_POST 都是超级全局变量,所以这些set 已经是Array,所以你应该在那里使用empty() 方法而不是isset()

      if(empty($_GET)){
          ...
          ...
      }
      

      【讨论】:

        猜你喜欢
        • 2019-12-04
        • 2011-05-22
        • 2015-07-25
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 2014-09-25
        • 1970-01-01
        • 2017-07-25
        相关资源
        最近更新 更多