php性能優化:使用 isset()判斷字符串長度速度比strlen()更快

php中如何判斷字符串的長度?不少人第一想到的應該就是 strlen() mb_strlen() 這些函數了。可是從程序性能上來說,這兩個函數在判斷字符串長度的過程當中都不是最佳的,雖然他們是專業級的檢測字符串長度的函數。php


經過本人實踐總結,php判斷字符串長度,使用isset()在速度上比strlen()更快,執行效率更高。html


那麼isset()速度爲何比strlen()更快呢?數據結構


strlen()函數函數執行起來至關快,由於它不作任何計算,只返回在zval 結構(C的內置數據結構,用於存儲PHP變量)中存儲的已知字符串長度。可是,因爲strlen()是函數,多多少少會有些慢,由於函數調用會通過諸多步驟,如字母小寫化、哈希查找,會跟隨被調用的函數一塊兒執行。所以在某些狀況下,合理使用isset()能夠加速你的程序。由於isset()是一種語言結構,它的執行不須要函數查找和字母小寫化等。函數


具體經過 isset() 和 strlen() 判斷字符串長度示例以下:性能

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

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


PHP strlen() 函數code


定義和用法htm


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


語法:strlen(string)string


參數:string 

描述:必需。規定要檢查的字符串。


strlen() 函數實例

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

結果將輸出:


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() 函數。

相關文章
相關標籤/搜索