为什么$ _GET和$ _POST在它们为空时返回true?

时间:2014-07-01 11:19:44

标签: php arrays post get isset

http://codepad.org/3duGkQZi

我理解如果$var = array()$var将返回true,因为即使数组为空,它仍然是一个设置变量。

但是$_GET$_POST不仅仅是数组,而是由PHP生成的数组。

为什么PHP甚至设置这些变量,如果没有什么可以放入它们?这背后有什么逻辑我错过了吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

  1. Superglobals是内置变量,在所有范围内始终可用
  2. $ _ GET是一个超全局变量
  3. 因此,$ _GET始终可用。这是语言开发人员的决定。

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

答案 2 :(得分:1)

$_GET$_POST都是超级全局变量,因此这些变量已setArray,因此您应使用empty()方法代替{{} 1}}

isset()