為什麼要在PHP中同時檢查isset()和!empty()函數

2021-03-02 php中文網最新課程

點擊藍字關注我們!每天獲取最新的編程小知識!

源 / php中文網      源 / www.php.cn

isset()函數是PHP中的內置函數,它檢查變量是否已設置且不為NULL。此函數還檢查聲明的變量,數組或數組鍵是否具有空值,如果是,isset()返回false,它在所有其他可能的情況下返回true。

語法:

bool isset( $var, mixed )

參數:此函數接受多個參數。這個函數的第一個參數是$ var。此參數用於存儲變量的值。

例:

<?php

   

$num = '0';

   

if( isset( $num ) ) {

    print_r(" $num is set with isset function <br>");

}

   

$array = array(); 

     

echo isset($array['geeks']) ? 

'array is set.' :  'array is not set.'; 

?>

輸出:

0 is set with isset function

array is not set.

empty()函數是一種語言構造,用於確定給定變量是空還是NULL。!empty()函數是empty()函數的否定或補充。empty()函數與!isset()函數相當,而!empty()函數等於isset()函數。

例:

<?php

   

$temp = 0;

   

if (empty($temp)) {

    echo $temp . ' is considered empty';

}

   

echo "\n";

   

$new = 1;

if (!empty($new)) {

    echo $new . ' is considered set';

}

?>

輸出:

0 is considered empty

1 is considered set

檢查兩個函數的原因:


isset()和!empty()函數類似,兩者都將返回相同的結果。但唯一的區別是!當變量不存在時,empty()函數不會生成任何警告或電子通知。它足以使用任何一個功能。通過將兩個功能合併到程序中會導致時間流逝和不必要的內存使用。

例:

<?php

 

$num = '0';

   

if( isset ( $num ) ) {

    print_r( $num . " is set with isset function");

}

   

echo "\n";

   

$num = 1;

   

if( !empty ( $num ) ) {

    print_r($num . " is set with !empty function");

}

輸出:

0 is set with isset function

1 is set with !empty function

相關推薦:《PHP教程》

http://www.php.cn/course/list/29.html

本篇文章就是為什麼要在PHP中同時檢查isset()和!empty()函數的原因介紹,希望對需要的朋友有所幫助!


-END-

聲明:本文選自「 php中文網 」,搜索「 phpcnnew 」即可關注!

相關焦點

  • [基礎] PHP中isset、empty的用法與區別示例詳解
    或許你早就知道如何用,或許對你有些許幫助,可是最後還是感謝你的關注鞏固php基礎,分享給你視頻教程【PHP7入門到進階_】,公眾號裡回覆:20200202   免費領取提取碼!這裡主要記錄兩個變量判斷函數的使用:isset()與empty()1、isset — 檢測變量是否已設置並且非 NULLisset ( mixed $var [, mixed $... ] ) : bool如果已經使用 unset() 釋放了一個變量之後,它將不再是 isset()。
  • 【基礎】函數isset()、!empty()與!is_null()的比較,不要覺得很簡單就略過
    empty()會首先檢查變量是否存在(存在返回true),然後再對變量值進行檢測; is_null()、以自身為參數,直接檢查變量值是否為null,如果變量未定義會出現錯誤警告。isset()、!empty()的輸入參數必須是一個變量($變量),因為它們是語言結構,不是函數,無法被變量函數調用(參考閱讀:可變函數); is_null()、以自身為參數,輸入參數只要是能夠有返回值的就可以(常量、變量、表達式等都可以);判斷為空的時刻: isset():僅當 未定義 或者 值為null 時,返回false;!
  • php的empty函數
    php的empty函數在參數為字符串「0」、整數0、浮點數0會返回true,在確定入參格式為數字時判斷不為null或者空字符串可以使用
  • PHP中的isset()和array_key_exists()函數的區別
    源 / php中文網      源 / www.php.cnisset()函數是PHP中的內置函數,它檢查變量是否已設置且不為NULL。>輸出:array_key_exists()函數array_key_exists()函數也是PHP中的預定義函數,它檢查數組中是否存在索引或特定鍵。它不會為任何空值評估鍵的值。如果它沒有在數組中找到鍵,則返回false,在所有其他可能情況下返回true。
  • PHP中__isset()方法詳解
    __isset(),當對不可訪問屬性調用isset()或empty()時調用在看這個方法之前我們看一下
  • PHP empty()和is_array()實現源碼分析
    通過注釋及函數名,可以猜測:是通過獲取php的變量類型是否為數組來實現的。2 empty()實現原理empty不是一個函數,而是一個語言結構。語言結構是在PHP程序運行前編譯好的,因此不能像之前那樣簡單地搜索PHP_FUNCTION empty或ZEND_FUNCTION empty查看其源碼。要想看empty等語言結構的源碼,先要理解PHP代碼執行的機制。
  • PHP為什麼empty可以訪問不存在的索引
    同樣是函數, 為什麼empty訪問不存在的索引就不會報錯呢? 按理說哈, 函數調用的時候, 會將將參數傳值過去吧, 也就是說兩個函數的調用第一步, 都是要把$arr['1']這個內容取出來吧, 那又為什麼一個能拿出來一個拿不出來呢?不懂就要問, 然後我就這個傳參的問題各種搜索, 也沒有找到想要的答案.
  • php代碼審計學習之函數缺陷
    檢查數組中是否存在某個值php弱類型比較時,6php會轉換為6,6在1-24中間,所以可以進行上傳piwigo2.7.1實例分析漏洞分析case 'rate' : { include_once(PHPWG_ROOT_PATH.'
  • PHP 編程中 10 個最常見的錯誤,你犯過幾個?
    `y` FROM `test` LIMIT $limitFrom, $portionSize"); }聯繫上面提到的錯誤4可以看出,在實際的編碼過程中,要做到一種平衡,才能既滿足功能要求,又能保證性能。
  • PHP 的奇技淫巧
    php$array = (array) $_REQUEST;$result = isset($array['a']) || isset($array['b']) || isset($array['c']);empty 語句empty 參與判斷賦值<?
  • php常見攻擊手法之ThinkPHP篇
    在數組這層,ThinkPHP對數據的過濾不夠嚴謹,導致的字符串拼接,從而sql注入在$data = M('user')->find(I('GET.id'));中下斷點,跟蹤到ThinkPHP/Library/Think/Model.class.php:720的select函數中列出兩條比較重要的語句
  • PHP代碼審計四
    >empty 和 isset 變量為:0,"0",null,'',false,array()時,使用empty函數,返回的都為true變量未定義或者為null時,isset函數返回的為false,其他都為true$a = null;$b = 0;$c = '';var_dump
  • 精通PHP序列化與反序列化之"道"
    序列化:將對象轉換成一個字符串,PHP序列化函數是:serialize() 反序列化:將序列化後的字符串還原為一個對象,PHP反序列化函數是:unserialize()在說反序列化漏洞之前我們先了解一下對象概念:我們舉個例子,如果把生物當成一個大類,那麼就可以分為動物和植物兩個類,而動物又可以分為食草動物和雜食動物,那有人可能會問了,為什麼這麼分呢
  • PHP反序列化筆記
    處理器對應的存儲格式php鍵名 + 豎線 + 經過 serialize() 函數序列化處理的值php_binary鍵名的長度對應的 ASCII 字符 + 鍵名 + 經過serialize()函數序列化處理的值php_serialize(php>=5.5.4)經過serialize()函數序列化處理的數組
  • php session 會話(專題)
    要理解什麼是php session,首先要理解什麼是會話機制會話機制HTTP 是基於無連接的網絡協議, 每一次訪問,對於伺服器來說,都是全新的如果記住訪問者,以及記錄連接狀態, 可以提升用戶體驗,完成許多個性化的功能,例如用戶登錄、購物車等其實讓伺服器記住用戶的方式很簡單, 就和生活中, 我們辦會員卡是一樣的會員卡的存儲位置有二個地方, 要麼放在你身上,要麼保存到商家電腦中所以
  • php學習之php的預定義常量的使用
    說明:常量一旦定義,裡面的值和常量是不能改變和銷毀的,而且常量名不能重複1.常量的定義:語法:define(常量名,常量值);不能定義複合數據5.xphp版本:const來定義複合的數據,如數組7.0 php版本:define可以定義複合的數據.如:define(ARR,[1,2,3,4,5
  • PHP之十六個魔術方法詳解 (一)
    (),當對不可訪問屬性調用isset()或empty()時調用__unset(),當對不可訪問屬性調用unset()時被調用。isset(),當對不可訪問屬性調用isset()或empty()時調用在看這個方法之前我們看一下isset()函數的應用,isset()是測定變量是否設定用的函數,傳入一個變量作為參數,如果傳入的變量存在則傳回true,否則傳回false。
  • php中函數禁用繞過的原理與利用
    這個功能主要就是用來有選擇性的載入不同動態連結庫中的相同函數。通過這個環境變量,我們可以在主程序和其動態連結庫的中間加載別的動態連結庫,甚至覆蓋正常的函數庫。一方面,我們可以以此功能來使用自己的或是更好的函數(無需別人的源碼),而另一方面,我們也可以以向別人的程序注入程序,從而達到特定的目的。
  • PHP框架之路由與控制器
    我們為什麼要使用路由?原因1:一個更漂亮的URI1.URI的改進剛剛開始學PHP時,我們一定寫過blog.php?id=1之類的URI,使用GET方式獲取參數。';}unset函數可以銷毀數組中key和value,但是並不會重建索引,所以path_arr[0]是要調用的控制器類和方法名,path_arr[1]或者path_arr[1..N]就作為傳入方法的參數。
  • PHP列印輸出函數匯總
    開發就一定需要調試代碼,而PHP調試代碼不能像iOS那種編譯器語言可以通過Xcode這樣的開發軟體來單步調試,因此開發PHP的人員通常會通過輸出函數列印相關提示信息來調試代碼。PHP中常用的列印輸出的函數一步步講解echoecho函數可以同時輸出多個字符串,帶多個參數,但並不要求使用圓括號,也沒有返回值。