考虑以下

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

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

有帮助吗?

解决方案

我会使用这样的:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // POST request
}

其他提示

我一直使用empty()因为它返回真,如果参数变量或者是设置或设置,但计算为False(其空数组会)优选的。这不仅节省了我心中的一步,它替代了混乱刚才提到的等效if(!isset($_POST) || !$_POST) { echo 'something'; }

如果要测试是否使用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 是一个“普通”函数,它首先将参数转换为数组,并检查它是否为空。就我个人而言,我会用它来检查空数组。

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

这与 count 略有不同,因为这里的 $value 将被转换为布尔值,并且因为空数组被转换为 false,所以它将获得与 count 相同的结果。

由于选角,存在一个非常大的问题:

$var = ''; // empty string
var_dump(empty($var)); // returns true
var_dump(count($var)); // returns false
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top