3

考虑以下

if(!count($_POST)) { echo 'something'; }
if(empty($_POST)) { echo 'something'; }
if(!$_POST) { echo 'something'; }

上面的每一行几乎都做同样的事情。我并没有特别关注我使用哪一个。我应该更具体吗?真的有关系吗?

4

3 回答 3

9

我会用这个:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // POST request
}
于 2009-03-20T21:48:54.310 回答
1

我一直更喜欢使用empty(),因为如果参数变量未设置或设置但计算结果为 False(空数组将),它会返回 True。这在我的脑海中节省了一步,并取代了if(!isset($_POST) || !$_POST) { echo 'something'; }刚才提到的混乱。

于 2009-03-20T22:08:19.207 回答
1

如果您想测试请求是否是使用 POST 请求发出的,那么检查 $_SERVER['request_method'] 是要走的路。

如果你想知道一个数组是否为空,有一些区别:

  • 空的()

Empty 将检查变量是否为“空”。PHP 认为以下值是空的:

*  "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)

Empty 是一种语言结构,这意味着您不能将其用作回调,因此以下操作将失败:

$var = array(); call_user_func('empty', $var);

它也只检查变量,因此以下操作也会失败并出现致命错误:

if (empty(array()) { // do something }

它也比 count 快,但这不应该让你考虑它而不是其他人。

  • 数数()

Count 是一个“普通”函数,它首先将参数转换为一个数组,并检查它是否为空。我个人会用它来检查空数组。

  • if ($value) { // 做某事 }

这和 count 有点不同,因为这里的 $value 会被强制转换为布尔值,并且因为空数组会被强制转换为 false,所以它会得到与 count 相同的结果。

由于铸造,涉及一个非常大的问题:

$var = ''; // empty string
var_dump(empty($var)); // returns true
var_dump(count($var)); // returns false
于 2009-03-21T01:53:27.497 回答