[英]Alternative to isset(user_input) in php
我想知道除了(顯而易見的選擇)isset()之外,是否還有另一種方法來檢查來自用戶輸入的變量是否已設置且不為空。 在某些情況下,我們可能不是使用 $_POST 來獲取值,而是使用一些類似的自定義函數。 isset() 不能用於函數調用的結果,因此必須使用另一種方法來執行相同的檢查。 現在,isset() 驗證了兩件事:
$variable = NULL;
)和由於輸入字段為空而獲得空值之間存在一些差異。 或者至少我是這么讀的。那么,有沒有一種在不使用 isset() 的情況下檢查這兩個要求的好方法?
函數返回值的等價於isset($var)
是func() === null
。
isset
基本上進行!== null
比較,如果測試的變量不存在,則不會引發錯誤。 這不是函數返回值的問題,因為 a) 函數必須存在(否則 PHP 將退出並出現致命錯誤)並且 b) 函數總是返回一些東西,至少是null
。 所以你真正需要做的就是檢查null
,不需要isset
。
我在這里廣泛地寫過這個: PHP isset 和 empty 的權威指南。
除此之外,這取決於您要檢查的具體內容:
isset($_POST['key'])
== false
: !empty($_POST['key'])
isset($_POST['key']) && strlen($_POST['key'])
filter_input
最好的方法是 isset 但如果你堅持...嘗試empty()
和strlen()
函數來檢查它是否為空或字符串長度大於這么多字符。 strlen()
返回一個數字,傳遞給它的變量的長度。 empty()
檢查其中是否有字符或是否為空。 使用empty()
你必須小心,因為有些函數返回0
或false
,這不被認為是空的。
if(!empty($var))....
或者
if(strlen($var)>2)...
您也可以使用!empty()
代替isset()
函數!empty()
適用於isset()
並檢查任何字符串的值是否不為 null、0 或任何空字符串。 每當我需要比較變量的存在或其值時,我通常更喜歡!empty()
。
這里有一些選項...
PHP 7.4+:空合並賦值運算符
$variable ??= '';
PHP 7.0+:空合並運算符
$variable = $var ?? '';
PHP 5.3+:三元運算符
isset($variable) ?: $var = '';
在大多數情況下,我會這樣做:
$v = my_func();
if (isset($v) and $v) {
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.