新聞中心
本教程操作環(huán)境:windows7系統(tǒng)、php7.1版、DELL G3電腦

相信大家經(jīng)??吹綄?duì)比一些PHP應(yīng)用中,說(shuō)用isset() 替換 strlen(),isset比strlen執(zhí)行速度快等。
例子:
if ( isset($user) ) {
//do some thing
}
原因是isset是語(yǔ)言結(jié)構(gòu),而strlen是一個(gè)函數(shù)。那什么是語(yǔ)言結(jié)構(gòu)呢?它和函數(shù)有什么不同嗎?
1、什么是語(yǔ)言結(jié)構(gòu)和函數(shù)
語(yǔ)言結(jié)構(gòu):就是PHP語(yǔ)言的關(guān)鍵詞,語(yǔ)言語(yǔ)法的一部分;它不可以被用戶(hù)定義或者添加到語(yǔ)言擴(kuò)展或者庫(kù)中;它可以有也可以沒(méi)有變量和返回值。
函數(shù):由代碼塊組成的,可以復(fù)用。從源碼的角度來(lái)說(shuō),也就是基于Zend引擎的基礎(chǔ)來(lái)實(shí)現(xiàn)的,ext拓展庫(kù)中的函數(shù)都是這樣實(shí)現(xiàn)的。
2、語(yǔ)言結(jié)構(gòu)為什么比函數(shù)快
原因是在PHP中,函數(shù)都要先被PHP解析器(Zend引擎)分解成語(yǔ)言結(jié)構(gòu),所以有此可見(jiàn),函數(shù)比語(yǔ)言結(jié)構(gòu)多了一層解析器解析。這樣就能比較好的理解,什么語(yǔ)言結(jié)構(gòu)比函數(shù)快了。
3、語(yǔ)言結(jié)構(gòu)和函數(shù)的不同
(1)語(yǔ)言結(jié)構(gòu)比對(duì)應(yīng)功能的函數(shù)快
(2)語(yǔ)言結(jié)構(gòu)在錯(cuò)誤處理上比較粗糙,由于是語(yǔ)言關(guān)鍵詞,所以不具備再處理的環(huán)節(jié)
(3)語(yǔ)言結(jié)構(gòu)不能在配置項(xiàng)(php.ini)中禁用,函數(shù)則可以。
(4)語(yǔ)言結(jié)構(gòu)不能被用做回調(diào)函數(shù)
補(bǔ):語(yǔ)言結(jié)構(gòu)列表 :
echo() print() die() isset() unset() include() array() list() empty() require(),
注意,include_once()是函數(shù) ,require_once()是函數(shù)
本文題目:php中語(yǔ)言結(jié)構(gòu)和函數(shù)有什么區(qū)別
文章出自:http://www.dlmjj.cn/article/cdpijpc.html


咨詢(xún)
建站咨詢(xún)
