考虑以下
if(!count($_POST)) { echo 'something'; }
if(empty($_POST)) { echo 'something'; }
if(!$_POST) { echo 'something'; }
上面的每一行几乎都做同样的事情。我并没有特别关注我使用哪一个。我应该更具体吗?真的有关系吗?
考虑以下
if(!count($_POST)) { echo 'something'; }
if(empty($_POST)) { echo 'something'; }
if(!$_POST) { echo 'something'; }
上面的每一行几乎都做同样的事情。我并没有特别关注我使用哪一个。我应该更具体吗?真的有关系吗?
我会用这个:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// POST request
}
我一直更喜欢使用empty()
,因为如果参数变量未设置或设置但计算结果为 False(空数组将),它会返回 True。这在我的脑海中节省了一步,并取代了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 快,但这不应该让你考虑它而不是其他人。
Count 是一个“普通”函数,它首先将参数转换为一个数组,并检查它是否为空。我个人会用它来检查空数组。
这和 count 有点不同,因为这里的 $value 会被强制转换为布尔值,并且因为空数组会被强制转换为 false,所以它会得到与 count 相同的结果。
由于铸造,涉及一个非常大的问题:
$var = ''; // empty string
var_dump(empty($var)); // returns true
var_dump(count($var)); // returns false