Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-评估IF语句的最佳实践_Php_If Statement - Fatal编程技术网

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

PHP-评估IF语句的最佳实践,php,if-statement,Php,If Statement,考虑以下几点 if(!count($_POST)) { echo 'something'; } if(empty($_POST)) { echo 'something'; } if(!$_POST) { echo 'something'; } 上面的每一行都做了同样的事情。我对我用哪一种并不挑剔。我应该更具体一点吗?这真的重要吗?我会用这个: if ($_SERVER['REQUEST_METHOD'] == 'POST') { // POST request } 我一直倾向于使用e

考虑以下几点

if(!count($_POST)) { echo 'something'; }
if(empty($_POST)) { echo 'something'; }
if(!$_POST) { echo 'something'; }
上面的每一行都做了同样的事情。我对我用哪一种并不挑剔。我应该更具体一点吗?这真的重要吗?

我会用这个:

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

我一直倾向于使用
empty()
,因为如果参数变量未设置或已设置,但计算结果为False(空数组将返回True)。这在我脑海中节省了一个步骤,并取代了刚才提到的等价的
如果(!isset($u POST)| |!$u POST){echo'something}

如果您想测试请求是否是使用POST请求发出的,那么 检查$\u服务器['request\u method']是一种方法

如果要确定数组是否为空,则存在一些差异:

  • 空的()
Empty将检查变量是否为“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是一个“普通”函数,它将首先将参数强制转换为数组,并检查它是否为空。我个人会用它来检查空数组

  • 如果($value){//do something}
这与count有一点不同,因为这里的$value将转换为布尔值,并且因为空数组转换为false,所以它将获得与count相同的结果

由于演员阵容,有一个非常大的陷阱:

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

只是提醒一下,没有“is_empty()”函数,只是“empty()”。您是否特别要求检查$\u POST或数组$_POST是一种特殊情况,因为它总是要被定义的。这就是我使用的!我还要检查我的表单/参数是否在那里,并且是否安全。哦,我认为“正确”的方式应该是使用小写字母“post”(好像它真的很重要)。在$u服务器['REQUEST\u METHOD']中,post的正确方式是“post”(大写),就像它在HTTP头中是大写的一样。@d03boy:HTTP请求方法字符串区分大小写,并且总是大写的。小写的“post”将不起作用(或不应该起作用)。