首頁 php教程 php手册 isset和is_null的不同

isset和is_null的不同

Jun 21, 2016 am 08:52 AM
is isset null quot

  isset和is_null啥区别,

  看手册上讲的话, isset和is_null的功能几乎完全”相反的一样”..

  是不是isset就是一个is_null的相反的别名?

  诶, 要说区别, 那还真的是很多~

  一切的不同都是因为: is_null是函数, isset是语句.

  isset是语句, 和echo, print一样, 是PHP本身的一种语言结构.

  而is_null是函数, 和我们一般的函数一样, 可以做为可变函数调用.

  你也许会说, 好了,好了,我知道函数和语句的区别, 但到底是TMD什么区别?

  诶, 所谓语句,语言结构, 就是说, 是语言本身支持的语句, 标识符.

  比如, for, foreach, continue 等等, 它们在语法分析的时刻就被”抹掉”(逻辑上替代了)了.

  让我们看看isset这个语句在语法分析的过程中, 是如何被”抹掉”的.

  1. 首先, 在词法分析的时候, isset会被识别为T_ISSET标识符.

  2. 而在语法分析阶段, isset($var)这个指令, 会被分析成一条Opcode:ZEND_ISSET_ISEMPTY_VARS.

  你可以理解isset就想C语言里面的宏, 在编译/执行之前已经被展开了.

  因为这个, 所以在表现上, 会有如下的不同:

  因为is_null是函数, 所以它可以通过如下方式调用:

  $var = NULL;

  $func = "is_null";

  $func($var);

  ?>

  而, isset因为是语句, 所以不能这样调用.

  因为is_null是函数, 所以它可以接受函数返回值做为参数, 而isset不行(当然, 如果PHP想支持, 其实也是可以的, 只不过就要增加编译阶段的复杂度了):

  is_null(intval("0x45"));

  //OK

  isset(intval("0x45"));

  //PHP Fatal error: Can't use function return value in write context

  is_null(NULL);

  //OK

  isset(NULL);

  //PHP Parse error: syntax error

  ?>

  说了这么多isset的缺点了, 说点它的优点吧:

  因为isset是语句, 所以它快!

  在一千万次的简单检测语句循环中, 对比结果如下:

  $a="laruence":

  isset($a); //用时: 1.15s

  is_null($a); //用时: 3.89s

  ?>

  因为isset叫做isset, 所以它在检测未定义变量的时候, 不会产生NOTICE:

  isset($laruence);

  //OK

  is_null($laruence);

  //PHP Notice: Undefined variable: laruence

  ?>

  那么, 对于什么时候用isset什么时候用is_null, 我有什么建议呢?

  诶, 我的建议是, 用函数做函数应该做的事情~, 听起来象废话?

  isset => is set? => 变量有没有被赋值(声明)

  is_null => is null? => 变量为NULL么?

  另外, 如果要用is_null, 我建议使用 “=== NULL” 来代替, 它不仅语义和is_null一致, 结果一致, 速度还和isset差不多:

  在一千万次的简单检测语句循环中, 对比结果如下:

  $a="laruence":

  isset($a); //用时: 1.15s

  is_null($a); //用时: 3.88s

  $a===NULL; //用时: 1.22s

  ?>



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1269
29
C# 教程
1249
24
PHP判斷某個數組中是否存在指定的key PHP判斷某個數組中是否存在指定的key Mar 21, 2024 pm 09:21 PM

這篇文章將為大家詳細講解有關PHP判斷某個數組中是否存在指定的key,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP判斷某個陣列中是否存在指定的key:在php中,判斷某個陣列中是否存在指定的key的方法有多種:1.使用isset()函數:isset($array[&quot;key&quot;])此函數傳回布林值,如果指定的key存在,則傳回true,否則傳回false。 2.使用array_key_exists()函數:array_key_exists(&quot;key&quot;,$arr

undefined和null是什麼意思 undefined和null是什麼意思 Nov 20, 2023 pm 02:39 PM

在JavaScript 中,undefined和null都代表著「無」的概念:1、undefined 表示一個未初始化的變數或一個不存在的屬性,當宣告了一個變數但沒有對其賦值時,這個變數的值就是undefined ,當存取物件中不存在的屬性時,傳回的值也是undefined;2、null表示一個空的物件引用,在某些情況下,可以將物件的引用設為null,以便釋放其佔用的記憶體。

c語言中null和NULL的差別是什麼 c語言中null和NULL的差別是什麼 Sep 22, 2023 am 11:48 AM

c語言中null和NULL的差異是:null是C語言中的一個宏定義,通常用來表示一個空指針,可以用來初始化指針變量,或是在條件語句中判斷指針是否為空;NULL是C語言中的一個預先定義常數,通常用來表示一個空值,用來表示一個空的指標、空的指標數組或是空的結構體指標。

null和undefined有什麼不同 null和undefined有什麼不同 Nov 08, 2023 pm 04:43 PM

null和undefined的差異在:1、語意意義;2、使用場景;3、與其它值的比較;4、與全域變數的關係;5、與函數參數的關係;6、可空性檢定;7、性能考慮;8、在JSON序列化中的表現;9、與類型的關係。詳細介紹:1、語意意義,null通常表示知道這個變數不會擁有任何有效的物件值,而undefined則通常表示變數未被賦值,或物件沒有此屬性;2、使用場景等等。

什麼時候用null和undefined 什麼時候用null和undefined Nov 13, 2023 pm 02:11 PM

null和undefined都表示缺少值或未定義的狀態,根據使用場景的不同,選擇使用null或undefined有以下一些指導原則:1、當需要明確指示一個變數為空或無效時,可以使用null;2、當一個變數已經宣告但尚未賦值時,會被預設為undefined;3、當需要檢查一個變數是否為空或未定義時,使用嚴格相等運算子「===」來判斷變數是否為null或undefined 。

java中null的用法有哪些 java中null的用法有哪些 Mar 01, 2024 am 10:10 AM

用法:1、將引用類型的變數初始化為null,表示該變數目前不指向任何物件;2、將引用類型的變數設為null,可以釋放該變數所引用的物件的記憶體空間,幫助垃圾回收器回收該物件;3、使用null來檢查一個引用是否為空,可以透過判斷引用是否為null來避免NullPointerException異常的發生;4、在條件判斷中使用null,可以判斷某個引用是否為空。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

從入門到精通:掌握is與where選擇器的使用技巧 從入門到精通:掌握is與where選擇器的使用技巧 Sep 08, 2023 am 09:15 AM

從入門到精通:掌握is與where選擇器的使用技巧引言:在進行資料處理與分析的過程中,選擇器(selector)是一項非常重要的工具。透過選擇器,我們可以按照特定的條件從資料集中提取所需的資料。本文將介紹is和where選擇器的使用技巧,幫助讀者快速掌握這兩個選擇器的強大功能。一、is選擇器的使用is選擇器是一種基本的選擇器,它允許我們根據給定條件對資料集進

See all articles