建立和is_null的差异分析
建立和is_null之间的区别是什么,在手册的建立和is_null功能几乎是相同的。
是否设置是一个is_null相反
哦,说实在的,真是太多了。
所有的差异是因为is_null是一个函数,并设置是一个声明。
定是一个声明,像回声,打印,一个PHP本身的语言结构。
和is_null是一个函数,像我们一般的功能,可以被称为一个变量的函数调用。
你可能会说,嗯,我知道函数和语句之间的区别,但是TMD有什么区别呢
所谓的人工智能,即语言结构,也就是说,语言本身就是支持语句、标识符的。
例如,foreach,继续,等等,他们是擦除解析时间(逻辑代替)。
让我们看看如何设置语句被删除在解析过程。
1。首先,在词法分析的时间,设置将被确定为一个t_isset标识符。
2。在分析阶段,isset($变量)的指令将被分析为一个操作码:zend_isset_isempty_vars。
你能理解时,要在C语言的宏将扩大在编译/执行。
正因为如此,所以在性能上,会有以下差异:
因为is_null是一个函数,它可以被称为如下:
复制代码代码如下所示:
< PHP
$ = null;
$函数=is_null ;
函数$(var);
>
而且,isset是一个语句,所以它不能像这样调用。
因为is_null是一个函数,它可以接受函数返回值作为参数,同时设置不。(当然,如果PHP想支持它,也可以这样做,但它只需要增加编译阶段的复杂性)。
复制代码代码如下所示:
< PHP
is_null(intval(0x45 ));
isset(intval(0x45 ));
致命错误:无法在写上下文中使用函数返回值
is_null(空);
isset(空);
解析错误:语法错误
>
说这么多集的缺点,说它的一些优点。
因为isset是一个命题,所以很快!
在简单测试语句的一千万个循环中,结果如下:
复制代码代码如下所示:
< PHP
$ =laruence :
isset(合一); / /时间:1.15s
is_null(合一); / /时间:3.89s
>
因为正在叫时,它不产生注意:当检测到未定义的变量。
复制代码代码如下所示:
< PHP
isset($ laruence);
is_null($ laruence);
/ / PHP通知:定义变量:laruence
>
所以,我有什么说什么时候使用isset和何时使用is_null
好的,我的建议是做一个函数应该做的事情,这听起来像一个废话。
设置>设置> = =变量没有分配(表)
is_null = >无效= >空变量
另外,如果你使用is_null,我建议使用= null,它不仅是一致的,语义和is_null结果和速度几乎是集:
在简单测试语句的一千万个循环中,结果如下:
复制代码代码如下所示:
< PHP
$ =laruence :
isset(合一); / /时间:1.15s
is_null(合一); / /时间:3.88s
美元= = = null; / /时间:1.22s
>