繁体   English   中英

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

[英]PHP - Best practices evaluating IF statement

考虑以下

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'; } if(;isset($_POST) || !$_POST) { echo 'something'; }刚才提到的混乱。

如果你想测试请求是否是使用 POST 请求发出的,那么检查 $_SERVER['request_method'] 是 go 的方法。

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

  • 空的()

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 是一个“正常”的 function,它会先将参数转换为一个数组,并检查它是否为空。 我个人会用它来检查空的 arrays。

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

这与 count 有点不同,因为这里的 $value 将被强制转换为 boolean,并且因为 empty arrays 被强制转换为 false,所以它会得到与 count 相同的结果。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM