首頁  >  文章  >  後端開發  >  php效能最佳化:isset()比strlen()更快

php效能最佳化:isset()比strlen()更快

小云云
小云云原創
2017-11-25 09:02:022275瀏覽

很多程式設計師在判斷字串長度的時候喜歡用 strlen() mb_strlen() 這些函數,雖然它們一直是專業測試字串長度的,但是他們不知道 strlen() mb_strlen() 這些函數並不是最佳的。其實php判斷字串長度,使用isset()在速度上比strlen()更快,執行效率更高。 php判斷字串長度,使用isset()在速度上比strlen()更快,執行效率更高。

那麼isset()速度為什麼比strlen()更快呢?

strlen()函數函數執行起來相當快,因為它不做任何計算,只回傳在zval 結構(C的內建資料結構,用於儲存PHP變數)中儲存的已知字串長度。但是,由於strlen()是函數,多多少少會有些慢,因為函數呼叫會經過諸多步驟,如字母小寫化、雜湊查找,會跟著被呼叫的函數一起執行。因此在某些情況下,合理使用isset()可以加速你的程式。因為isset()是一種語言結構,它的執行不需要函數查找和字母小寫化等。

具體透過 isset() 和 strlen() 判斷字串長度範例如下:

 $str='http://www.phpernote.com/php-template/436.html';    
 if(strlen($str)<5){echo "未满5";}    
if(!isset($str{5})){echo "未满5";}

下面我們來詳細的分析一下strlen()和isset()這兩個函數。

PHP strlen() 函數

定義與用法

strlen() 函數傳回字串的長度。

語法:strlen(string)

參數:string 
說明:必要。規定要檢查的字串。

strlen() 函數實例

<?php    
 echo strlen("Hello world!");    
?>

結果將輸出:

#12

PHP isset() 函數

isset函數是偵測變數是否設定。

語法:bool isset ( mixed var [, mixed var [, ...]] )

傳回值:

若變數不存在則傳回FALSE 
若變數存在且其值為NULL,也傳回FALSE 
若變數存在且值不為NULL,則傳回TURE 
同時檢查多個變數時,每個單一項目符合上一條要求時才傳回TRUE,否則結果為FALSE
如果已經使用unset() 釋放了一個變數之後,它將不再是isset()。若使用 isset() 測試一個被設定成 NULL 的變量,將會傳回 FALSE。同時要注意的是:一個 NULL 位元組("")並不等同於 PHP 的 NULL 常數。

警告:isset() 只能用於變量,因為傳遞任何其它參數都會造成解析錯誤。若想檢測常數是否已設置,可使用defined() 函數。

以上就是isset()速度為什麼比strlen()更快的原因,大家可以實際操作一下。

相關推薦:

php中isset()和unset()函數使用方法詳解

php傳回字串的長度的函數strlen()

PHP取得字串長度函數strlen()函數

以上是php效能最佳化:isset()比strlen()更快的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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