[英]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。
這與 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.