簡體   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