isset函數我們多用于判斷變量是不是存在了,如isset($a)了,如果存在返回 true,否則返回false了,下面我們一起來看看.
isset函數是檢測變量是否設置.
格式:bool isset ( mixed var [, mixed var [, ...]] )
返回值:若變量不存在則返回 FALSE,若變量存在且其值為NULL,也返回 FALSE,若變量存在且值不為NULL,則返回 TURE,同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE.
如果已經使用 unset() 釋放了一個變量之后,它將不再是 isset(),若使用 isset() 測試一個被設置成 NULL 的變量,將返回 FALSE,同時要注意的是一個 NULL 字節("")并不等同于 PHP 的 NULL 常數.
獲取用戶屬性時有的用戶能,有的用戶不能,同樣的邏輯為什么不能經檢查使用了類似這樣的代碼:
- $userInfo=’abc’;
- if(isset($userInfo['account'])) {
- $account=$userInfo['account'];
- } else {
- $account=$userInfo;
- }
發現$account得到的是空,查了一些資料也沒得到結果,做了一個實驗得到了結論,代碼如下:
$a=’abc;echo $a['account'];
結果是a,當是字符串key沒有時,它會轉化成數字key,是0,所以得到了a,現在php5.4已經修復,趁這機會,整理了一下isset的用法,供大家借鑒,代碼如下:
- <?php
- $var = '';
- if (isset($var)) {
- print "This var is set set so I will print.";
- }
- // 在后邊的例子中,我們將使用 var_dump函數 輸出 isset() 的返回值。
- $a = "test";
- $b = "anothertest";
- var_dump( isset($a) ); // TRUE
- var_dump( isset ($a, $b) ); // TRUE
- unset ($a);
- var_dump( isset ($a) ); // FALSE
- var_dump( isset ($a, $b) ); // FALSE
- $foo = NULL;
- var_dump( isset ($foo) ); // FALSE
- ?>
這對于數組中的元素也同樣有效,代碼如下:
- <?php
- $a = array ('test' => 1, 'hello' => NULL);
- var_dump( isset ($a['test') ); // TRUE
- var_dump( isset ($a['foo') ); // FALSE
- var_dump( isset ($a['hello') ); // FALSE
- //開源代碼Vevb.com
- // 'hello' 等于 NULL,所以被認為是未賦值的。
- // 如果想檢測 NULL 鍵值,可以試試下邊的方法。
- var_dump( array_key_exists('hello', $a) ); // TRUE
- ?>
鍵 ‘b’ 的值等于 NULL,所以被認為是未置值的,但是鍵’c'的值是空結果是true,空值是代表 有設置的 如果想檢測 NULL 鍵值,可以試試下邊的方法,代碼如下:
var_dump( array_key_exists(‘hello’, $a) ); // TRUE
警告:isset() 只能用于變量,因為傳遞任何其它參數都將造成解析錯誤,若想檢測常量是否已設置,可使用 defined() 函數.
一些應用中實例:PHP isset()對PHP參數判斷您可以使用 PHP isset() 來判斷一個參數是否被定義,注意如果該參數為空,或者"n"(NULL字節)使用 PHP isset() 判斷之后,都會為TRUE,代碼如下:
- <?php
- $weigeti=''; //這里初始參數$weigeti='';
- $weigeti0=FALSE //這里初始參數為布爾FALSE
- $weigeti2=NULL; //這里定義$weigeti2=NULL,用isset()判斷返回FALSE
- $weigeti3=""; // 這里是NULL字節,用isset()判斷,返回TRUE,不同于NULL常數
- $weigeti4="www.49028c.com"; //這里定義會在下面給unset掉
- if(isset($weigeti)){ echo '參數$weigeti已經設定,且值不為NULL'; }
- // 參數$weigeti已經賦值,而且值為$weigeti='',所以會輸出“參數$weigeti已經設定”
- if(isset($weigeti0)){ echo '參數$weigeti0已經設定,且值不為NULL'; }
- // 參數$weigeti0已經賦值,而且值為$weigeti=FALSE,所以會輸出“參數$weigeti已經設定”
- if(isset($vget)){ echo '參數$vget已經設定,且值不為NULL'; }
- // 參數$vget根本就沒有被提及過,isset($vget)返回FALSE,不會輸出
- if(isset($weigeti2)){ echo '參數$weigeti2已經設定,且值不為NULL'; }
- // 這里是$weigeti2雖然被設定了,但是$weigeti2=NULL,所以isset($weigeti2)返回FALSE,不會輸出
- if(isset($weigeti3)){ echo '參數$weigeti3已經設定,且值不為NULL'; }
- // 參數$weigeti3 雖然 就是代表NULL字節,但是這個不是常數NULL,所以$isset("")返回TRUE,會輸出
- unset($weigeti4); //這里給$weigeti4 釋放掉了
- if(isset($weigeti4)){ echo '參數$weigeti4已經設定,且值不為NULL'; }
- // 雖然開始已經定義$weigeti4,而且還不為NULL,但是后來又給 unset() 掉了,所以不會輸出。
- ?>
PHP isset() 對數組的判斷在使用PHP數組的時候,需要判斷數組的某個值是否存在也可以使用 PHP isset() 函數,代碼如下:
- <?php
- $V=array(
- 'WeiGeTi'=>'www.Vevb.net',
- 'V-Get'=>array(
- 'www'=>'www.49028c.com',
- 'e'=>'e.v-get.com',
- 'wuliu'=>array(
- 'www'=>'wuliu.Vevb.com',
- 'yiwu'=>'www.49028c.com'
- )
- )
- );
- // var_dump用于輸出TRUE 或 FALSE
- var_dump(isset($V['WeiGeTi']));
- // 數組$V 的$V['WeiGeTi'] ='www.49028c.com'已經存在,所以輸出TRUE
- var_dump(isset($V['V-Get']['e']));
- //$V['V-Get']['e']='e.v-get.com' 所以輸出 TRUE
- var_dump(isset($V['V-Get']['wuliu']['yiwu']));
- // $V['V-Get']['wuliu']['yiwu']='www.49028c.com'所以輸出TRUE
- var_dump(isset($V['V-Get']['wuliu']['sh']));
- //根據數組,根本就沒有設定該項,所以輸出FALSE
- ?>
PHP isset()多參數判斷很多時候我們需要對多個參數進行判斷,可以使用isset($A)&&isset($B)……來判斷這些參數是不是都已經設定了,而且都不為NULL,對此您可以使用isset()多參數來判斷是不是都設定了,代碼如下:
- <?php
- isset($v1)&&isset($v2)&&isset($v3)……
- 等價于
- isset($v1,$v2,$v3……)
- ?>
使用isset()判斷多個參數,需要所有參數都被設定,且不為NULL,只要其中有一個參數沒有被設定過,或者為NULL,那么整個isset()就為FALSE.
PHP isset()判斷$_POST、$_GET、$_REQUEST等值,用isset() 或者empty() 判斷通過表單傳遞來的參數是isset() 最常見的用法,代碼如下:
- if(isset($_POST['from'])&&'E.V-Get.com'==$_POST['from']){
- echo '網站通過POST傳遞的來源是E.V-Get.com';
- }
根據上面我們可以用isset判斷多參數,在對表單傳遞來的值進行判斷就最方便了,代碼如下:
- <?php
- //表單傳遞來user用戶名和 pass必須同時存在才能執行
- if(isset($_POST['user'],$_POST['pass'])){
- $user=$_POST['user'];
- $pass=$_POST['pass'];
- echo '您填寫的用戶名是:',$user,';密碼是:',$pass;
- }
- ?>
PHP isset($var{字符串長度}) 判斷字符串長度用PHP判斷字符串是否存在或者判斷字符串長度是否超過某一數字或者判斷字符串長度是否為空一般使用strlen(),但是其實使用isset()性能更優越,代碼如下:
- <?php
- //三元,等同于 if(isset($_POST['from'])){$weigeti=$_POST['from'];}else{$weiget='';}
- $weigeti=isset($_POST['from'])?$_POST['from']:'';
- //判斷$weigeti存在,且字符串長度大于0
- /* 菜鳥寫法
- if(strlen($weigeti)>0){
- echo '$weigeti子符長度大于0';}
- */
- // 性能更優越的寫法,判斷$weigeti第1個字符是否設定了
- if(isset($weigeti{1})){
- echo '$weigeti字符長度大于0';
- }
- ?>
新聞熱點
疑難解答