技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統(tǒng)
網站運營

贊助商

分類目錄

贊助商

最新文章

搜索

php判斷字符串長度 isset()速度比strlen()更快

作者:admin    時間:2012-11-6 22:58:29    瀏覽:

在php里當需要判斷一個字符串長度時,我們首先想到的是strlen()函數(shù),不錯,strlen()返回的就是字符串的長度,這樣使用沒有任何問題。不過,如果要從php程序優(yōu)化的角度來看,使用strlen()判斷字符串長度未免是最好的寫法。

程序的優(yōu)化,需要經驗的積累,那是知識的沉淀,厚積薄發(fā)的體現(xiàn)。

有經驗的程序員發(fā)現(xiàn),php判斷字符串長度,使用isset()在速度上比strlen()更快,執(zhí)行效率更高。

因此,今天就分析一下strlen()和isset()這兩個函數(shù)。

PHP strlen() 函數(shù)

定義和用法

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

語法

strlen(string)

參數(shù):string
描述:必需。規(guī)定要檢查的字符串。

實例

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

輸出

12

PHP isset() 函數(shù)

isset函數(shù)是檢測變量是否設置。

格式

bool isset ( mixed var [, mixed var [, ...]] )

返回值

若變量不存在則返回 FALSE
若變量存在且其值為NULL,也返回 FALSE
若變量存在且值不為NULL,則返回 TURE
同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE
如果已經使用 unset() 釋放了一個變量之后,它將不再是 isset()。若使用 isset() 測試一個被設置成 NULL 的變量,將返回 FALSE。同時要注意的是一個 NULL 字節(jié)("")并不等同于 PHP 的 NULL 常數(shù)。

警告

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

實例

<?php
$var = '';
if (isset($var)) {
print "This var is set set so I will print.";
}
// 在后邊的例子中,我們將使用 var_dump函數(shù) 輸出 isset() 的返回值。
$a = "test";
$b = "anothertest";
var_dump( isset($a) ); // TRUE
var_dump( isset ($a, $b) ); // TRUE
unset ($a);
var_dump( isset ($a) ); // FALSE
var_dump( isset ($a, $b) ); // FALSE
$foo = NULL;
var_dump( isset ($foo) ); // FALSE
?>

導讀var_dump()和print_r()在斷點調試程序時的區(qū)別

isset()速度為什么比strlen()更快

strlen()函數(shù)函數(shù)執(zhí)行起來相當快,因為它不做任何計算,只返回在zval 結構(C的內置數(shù)據結構,用于存儲PHP變量)中存儲的已知字符串長度。但是,由于strlen()是函數(shù),多多少少會有些慢,因為函數(shù)調用會經過諸多步驟,如字母小寫化(譯注:指函數(shù)名小寫化,PHP不區(qū)分函數(shù)名大小寫)、哈希查找,會跟隨被調用的函數(shù)一起執(zhí)行。

在某些情況下,使用isset() 技巧可以加速執(zhí)行你的代碼。因為與isset()作為一種語言結構,意味著它的執(zhí)行不需要函數(shù)查找和字母小寫化。也就是說,實際上在檢驗字符串長度的頂層代碼中你沒有花太多開銷。

舉例如下:

if (strlen($foo) < 5) { echo "Foo is too short"$$ }
if (!isset($foo{5})) { echo "Foo is too short"$$ }

調用isset()比strlen()快。

導讀php isset和empty、==(等)和===(恒等)的區(qū)別

知識擴展

PHP String 函數(shù)

String 字符串函數(shù)允許您對字符串進行操作。

String 函數(shù)是 PHP 核心的組成部分。無需安裝即可使用這些函數(shù)。

函數(shù) 描述 PHP版本
addcslashes() 在指定的字符前添加反斜杠。 4
addslashes() 在指定的預定義字符前添加反斜杠。 3
bin2hex() 把 ASCII 字符的字符串轉換為十六進制值。 3
chop() rtrim() 的別名。 3
chr() 從指定的 ASCII 值返回字符。 3
chunk_split() 把字符串分割為一連串更小的部分。 3
convert_cyr_string() 把字符由一種 Cyrillic 字符轉換成另一種。 3
convert_uudecode() 對 uuencode 編碼的字符串進行解碼。 5
convert_uuencode() 使用 uuencode 算法對字符串進行編碼。 5
count_chars() 返回字符串所用字符的信息。 4
crc32() 計算一個字符串的 32-bit CRC。 4
crypt() 單向的字符串加密法 (hashing)。 3
echo() 輸出字符串。 3
explode() 把字符串打散為數(shù)組。 3
fprintf() 把格式化的字符串寫到指定的輸出流。 5
get_html_translation_table() 返回翻譯表。 4
hebrev() 把希伯來文本從右至左的流轉換為左至右的流。 3
hebrevc() 同上,同時把(\n) 轉為 <br />。 3
html_entity_decode() 把 HTML 實體轉換為字符。 4
htmlentities() 把字符轉換為 HTML 實體。 3
htmlspecialchars_decode() 把一些預定義的 HTML 實體轉換為字符。 5
htmlspecialchars() 把一些預定義的字符轉換為 HTML 實體。 3
implode() 把數(shù)組元素組合為一個字符串。 3
join() implode() 的別名。 3
levenshtein() 返回兩個字符串之間的 Levenshtein 距離。 3
localeconv() 返回包含本地數(shù)字及貨幣信息格式的數(shù)組。 4
ltrim() 從字符串左側刪除空格或其他預定義字符。 3
md5() 計算字符串的 MD5 散列。 3
md5_file() 計算文件的 MD5 散列。 4
metaphone() 計算字符串的 metaphone 鍵。 4
money_format() 把字符串格式化為貨幣字符串。 4
nl_langinfo() 返回指定的本地信息。 4
nl2br() 在字符串中的每個新行之前插入 HTML 換行符。 3
number_format() 通過千位分組來格式化數(shù)字。 3
ord() 返回字符串第一個字符的 ASCII 值。 3
parse_str() 把查詢字符串解析到變量中。 3
print() 輸出一個或多個字符串。 3
printf() 輸出格式化的字符串。 3
quoted_printable_decode() 解碼 quoted-printable 字符串。 3
quotemeta() 在字符串中某些預定義的字符前添加反斜杠。 3
rtrim() 從字符串的末端開始刪除空白字符或其他預定義字符。 3
setlocale() 設置地區(qū)信息(地域信息)。 3
sha1() 計算字符串的 SHA-1 散列。 4
sha1_file() 計算文件的 SHA-1 散列。 4
similar_text() 計算兩個字符串的匹配字符的數(shù)目。 3
soundex() 計算字符串的 soundex 鍵。 3
sprintf() 把格式化的字符串寫寫入一個變量中。 3
sscanf() 根據指定的格式解析來自一個字符串的輸入。 4
str_ireplace() 替換字符串中的一些字符。(對大小寫不敏感) 5
str_pad() 把字符串填充為新的長度。 4
str_repeat() 把字符串重復指定的次數(shù)。 4
str_replace() 替換字符串中的一些字符。(對大小寫敏感) 3
str_rot13() 對字符串執(zhí)行 ROT13 編碼。 4
str_shuffle() 隨機地打亂字符串中的所有字符。 4
str_split() 把字符串分割到數(shù)組中。 5
str_word_count() 計算字符串中的單詞數(shù)。 4
strcasecmp() 比較兩個字符串。(對大小寫不敏感) 3
strchr() 搜索字符串在另一字符串中的第一次出現(xiàn)。strstr() 的別名 3
strcmp() 比較兩個字符串。(對大小寫敏感) 3
strcoll() 比較兩個字符串(根據本地設置)。 4
strcspn() 返回在找到任何指定的字符之前,在字符串查找的字符數(shù)。 3
strip_tags() 剝去 HTML、XML 以及 PHP 的標簽。 3
stripcslashes() 刪除由 addcslashes() 函數(shù)添加的反斜杠。 4
stripslashes() 刪除由 addslashes() 函數(shù)添加的反斜杠。 3
stripos() 返回字符串在另一字符串中第一次出現(xiàn)的位置(大小寫不敏感) 5
stristr() 查找字符串在另一字符串中第一次出現(xiàn)的位置(大小寫不敏感) 3
strlen() 返回字符串的長度。 3
strnatcasecmp() 使用一種“自然”算法來比較兩個字符串(對大小寫不敏感) 4
strnatcmp() 使用一種“自然”算法來比較兩個字符串(對大小寫敏感) 4
strncasecmp() 前 n 個字符的字符串比較(對大小寫不敏感)。 4
strncmp() 前 n 個字符的字符串比較(對大小寫敏感)。 4
strpbrk() 在字符串中搜索指定字符中的任意一個。 5
strpos() 返回字符串在另一字符串中首次出現(xiàn)的位置(對大小寫敏感) 3
strrchr() 查找字符串在另一個字符串中最后一次出現(xiàn)的位置。 3
strrev() 反轉字符串。 3
strripos() 查找字符串在另一字符串中最后出現(xiàn)的位置(對大小寫不敏感) 5
strrpos() 查找字符串在另一字符串中最后出現(xiàn)的位置(對大小寫敏感) 3
strspn() 返回在字符串中包含的特定字符的數(shù)目。 3
strstr() 搜索字符串在另一字符串中的首次出現(xiàn)(對大小寫敏感) 3
strtok() 把字符串分割為更小的字符串。 3
strtolower() 把字符串轉換為小寫。 3
strtoupper() 把字符串轉換為大寫。 3
strtr() 轉換字符串中特定的字符。 3
substr() 返回字符串的一部分。 3
substr_compare() 從指定的開始長度比較兩個字符串。 5
substr_count() 計算子串在字符串中出現(xiàn)的次數(shù)。 4
substr_replace() 把字符串的一部分替換為另一個字符串。 4
trim() 從字符串的兩端刪除空白字符和其他預定義字符。 3
ucfirst() 把字符串中的首字符轉換為大寫。 3
ucwords() 把字符串中每個單詞的首字符轉換為大寫。 3
vfprintf() 把格式化的字符串寫到指定的輸出流。 5
vprintf() 輸出格式化的字符串。 4
vsprintf() 把格式化字符串寫入變量中。 4
wordwrap() 按照指定長度對字符串進行折行處理。 4

 

標簽: 優(yōu)化  
x
  • 站長推薦
/* 左側顯示文章內容目錄 */