一切的不同都是因?yàn)? is_null是函數(shù), isset是語(yǔ)句.is " /> 国产成人久久AV免费看澳门,中文字幕精品在线视频,精品久久久无码21P发布

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

解析isset與is_null的區(qū)別

isset和is_null啥區(qū)別,
看手冊(cè)上講的話(huà), isset和is_null的功能幾乎完全”相反的一樣”..
是不是isset就是一個(gè)is_null的相反的別名?
誒, 要說(shuō)區(qū)別, 那還真的是很多~

一切的不同都是因?yàn)? is_null是函數(shù), isset是語(yǔ)句.
isset是語(yǔ)句, 和echo, print一樣, 是php本身的一種語(yǔ)言結(jié)構(gòu).
而is_null是函數(shù), 和我們一般的函數(shù)一樣, 可以做為可變函數(shù)調(diào)用.
你也許會(huì)說(shuō), 好了,好了,我知道函數(shù)和語(yǔ)句的區(qū)別, 但到底是TMD什么區(qū)別?
誒, 所謂語(yǔ)句,語(yǔ)言結(jié)構(gòu), 就是說(shuō), 是語(yǔ)言本身支持的語(yǔ)句, 標(biāo)識(shí)符.
比如, for, foreach, continue 等等, 它們?cè)谡Z(yǔ)法分析的時(shí)刻就被”抹掉”(邏輯上替代了)了.
讓我們看看isset這個(gè)語(yǔ)句在語(yǔ)法分析的過(guò)程中, 是如何被”抹掉”的.

1. 首先, 在詞法分析的時(shí)候, isset會(huì)被識(shí)別為T(mén)_ISSET標(biāo)識(shí)符.
2. 而在語(yǔ)法分析階段, isset($var)這個(gè)指令, 會(huì)被分析成一條Opcode:ZEND_ISSET_ISEMPTY_VARS.

你可以理解isset就想C語(yǔ)言里面的宏, 在編譯/執(zhí)行之前已經(jīng)被展開(kāi)了.
因?yàn)檫@個(gè), 所以在表現(xiàn)上, 會(huì)有如下的不同:
因?yàn)閕s_null是函數(shù), 所以它可以通過(guò)如下方式調(diào)用:
復(fù)制代碼 代碼如下:
<?php
$var = NULL;
$func = "is_null";
$func($var);
?>

而, isset因?yàn)槭钦Z(yǔ)句, 所以不能這樣調(diào)用.
因?yàn)閕s_null是函數(shù), 所以它可以接受函數(shù)返回值做為參數(shù), 而isset不行(當(dāng)然, 如果php想支持, 其實(shí)也是可以的, 只不過(guò)就要增加編譯階段的復(fù)雜度了):
復(fù)制代碼 代碼如下:
<?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
?>

說(shuō)了這么多isset的缺點(diǎn)了, 說(shuō)點(diǎn)它的優(yōu)點(diǎn)吧:
因?yàn)閕sset是語(yǔ)句, 所以它快!
在一千萬(wàn)次的簡(jiǎn)單檢測(cè)語(yǔ)句循環(huán)中, 對(duì)比結(jié)果如下:
復(fù)制代碼 代碼如下:
<?php
$a="laruence":
isset($a); //用時(shí): 1.15s
is_null($a); //用時(shí): 3.89s
?>

因?yàn)閕sset叫做isset, 所以它在檢測(cè)未定義變量的時(shí)候, 不會(huì)產(chǎn)生NOTICE:
復(fù)制代碼 代碼如下:
<?php
isset($laruence);
//OK
is_null($laruence);
//php Notice: Undefined variable: laruence
?>

那么, 對(duì)于什么時(shí)候用isset什么時(shí)候用is_null, 我有什么建議呢?
誒, 我的建議是, 用函數(shù)做函數(shù)應(yīng)該做的事情~, 聽(tīng)起來(lái)象廢話(huà)?
isset => is set? => 變量有沒(méi)有被賦值(聲明)
is_null => is null? => 變量為NULL么?
另外, 如果要用is_null, 我建議使用 “=== NULL” 來(lái)代替, 它不僅語(yǔ)義和is_null一致, 結(jié)果一致, 速度還和isset差不多:
在一千萬(wàn)次的簡(jiǎn)單檢測(cè)語(yǔ)句循環(huán)中, 對(duì)比結(jié)果如下:
復(fù)制代碼 代碼如下:
<?php
$a="laruence":
isset($a); //用時(shí): 1.15s
is_null($a); //用時(shí): 3.88s
$a===NULL; //用時(shí): 1.22s
?>

php技術(shù)解析isset與is_null的區(qū)別,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产乱人偷精品视频A人人澡 | 我的好妈妈8高清在线观看WWW | 精品午夜久久影视 | 云南14学生真实初次破初视频 | 日本aa大片 | 欧美18精品久久久无码午夜福利 | 九九九色成人网 | 邪恶肉肉全彩色无遮盖 | 亚洲国产精品嫩草影院永久 | 国产精品亚洲国产三区 | 国产精品第1页 | 俄罗斯女人Z0ZOZO | 99re2.久久热最新地址 | 国产欧美一区二区精品久久久 | 久草热8精品视频在线观看 久草青青在线 | 久久香蕉国产线看观看精品 | 成人天堂婷婷青青视频在线观看 | 91久久综合精品国产丝袜长腿 | 强被迫伦姧惨叫VIDEO | 色狠狠xx| 一级做a爰片久久毛片潮喷动漫 | 最近的2019中文字幕国语完整版 | 亚洲欧洲日韩视频在钱 | 男女爽爽无遮挡午夜视频在线观看 | 无人在线观看免费高清视频播放 | 成年人视频免费在线观看 | 国产二级一片内射视频播放 | 欧美怡红院视频一区二区三区 | free俄罗斯性xxxxhd派对 | 无人影院在线播放视频 | 亚洲精品不卡在线 | 混乱家庭电影完整版在线看 | 亚洲AV午夜福利精品香蕉麻豆 | 国产精品久免费的黄网站 | 国内精品人妻无码久久久影院蜜桃 | 手机看片国产免费久久网 | 久久亚洲人成国产精品 | av老司机色爱区综合 | 国产成人v视频在线观看 | 欧美性猛交AAA片免费观看 | 日本无码人妻丰满熟妇5G影院 |