PHP - 评估IF语句的最佳实践

时间:2009-03-20 21:43:12

标签: php if-statement

考虑以下

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

上面的每一行几乎都做同样的事情。我没有特别说明我使用的是哪一个。我应该更特别一点吗?这真的很重要吗?

3 个答案:

答案 0 :(得分:9)

我会用这个:

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

答案 1 :(得分:1)

我总是喜欢使用empty(),因为如果参数变量未设置或设置但是计算结果为False(空数组将为),则返回True。这样可以省去我的一步,取代刚刚提到的混乱的等效if(!isset($_POST) || !$_POST) { echo 'something'; }

答案 2 :(得分: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是一个“普通”函数,它首先将参数转换为数组,并检查它是否为空。我个人会用它来检查空数组。

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

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

因为演员而涉及非常大的问题:

$var = ''; // empty string
var_dump(empty($var)); // returns true
var_dump(count($var)); // returns false