對 php中關於處理字串時效率的討論 的改進

2021-04-25 09:20:54 字數 2053 閱讀 5455

今天看了,一篇同樣來自csdn的blog,我自己多事,做了一點測試,在其中發現了一些問題,寫了下面這篇:

以下虛線部分來自arcow 的 blog:

有一堆類似以下變數$abc的字串,末尾都多出來了乙個,(逗號),我想去掉末尾的逗號,為了驗證不同的處理方法的執行時間,以下是我寫的乙個對比程式進行試驗:

程式一,利用substr

<?php

function getmicrotime()

$time_start = getmicrotime();

$abc="重慶,萬州,涪陵,渝中,大渡口,江北,沙坪壩,九龍坡,南岸,北碚,萬盛,雙撟,渝北,巴南,黔江,長壽,綦江,潼南,銅梁,大足,榮昌,壁山,梁平,城口,豐都,墊江,武隆,忠縣,開縣,雲陽,奉節,巫山,巫溪,石柱,";

$l=strlen($abc);

$abc=substr($abc,0,$l-1);

echo $abc."

";$time_end = getmicrotime();

echo ($time_end-$time_start)*1000;

?>

程式二,利用正規表示式

<?php

function getmicrotime()

$time_start = getmicrotime();

$abc="重慶,萬州,涪陵,渝中,大渡口,江北,沙坪壩,九龍坡,南岸,北碚,萬盛,雙撟,渝北,巴南,黔江,長壽,綦江,潼南,銅梁,大足,榮昌,壁山,梁平,城口,豐都,墊江,武隆,忠縣,開縣,雲陽,奉節,巫山,巫溪,石柱,";

$abc=str_replace(",$","",$abc);

echo $abc."

";$time_end = getmicrotime();

echo ($time_end-$time_start)*1000;

?>

結果程式一的執行平均時間為0.045,程式二的執行平均時間為0.085。不進行任何處理的平均執行時間為0.041

可見利用第一種方法處理效率要高出盡50%

由此,我們在做程式的過程中,尤其是在要求高效的程式中,我們應該對不同的方法進行一下對比,找出最優化的處理方法。

在這個例子中:

關鍵之處在於例一中的:

/*$l=strlen($abc);

$abc=substr($abc,0,$l-1);*/

和例二中的:

/*$abc=str_replace(",$","",$abc);*/

這個地方顯然存在可以再改進的地方:

substr()方法中,第三個引數如果用負數的話,php會自動從string的最後開始記數,據此,可以修改此方法如下:

$abc=substr($abc,0,-1);

即可。故整個程式改為:

程式三,改進的substr

<?php

function getmicrotime()

$time_start = getmicrotime();

$abc="重慶,萬州,涪陵,渝中,大渡口,江北,沙坪壩,九龍坡,南岸,北碚,萬盛,雙撟,渝北,巴南,黔江,長壽,綦江,潼南,銅梁,大足,榮昌,壁山,梁平,城口,豐都,墊江,武隆,忠縣,開縣,雲陽,奉節,巫山,巫溪,石柱,";

$abc=substr($abc,0,-1);

echo $abc."

";$time_end = getmicrotime();

echo ($time_end-$time_start)*1000;

?>

另外:在我實際的測試中發現:

結果程式一的執行平均時間為0.049,程式二的執行平均時間為0.017,

程式三的執行平均時間為0.012

。 執行

處理效率

,不言自明!

再羅嗦一點:

不知原作者的平均時間和」可見利用第一種方法處理效率

要高出盡50%

「的結論

是怎麼得到的?

在此,只想提交我個人的一點測試結論,僅供參考,無其他!!!

php對字串的多種處理

1.字串拼接 str1 hello str2 world 連線上面兩個字串 中間用空格分隔,也可以用,等 str3 str1 str2 2.字串分割 以特殊符號分割 str hello,xiaoming,how are you point explode str,3 引數3表示分割成的陣列中的元素個...

php 中字串處理函式

1 查詢字元位置函式 strpos str,search,int 查詢search在 str中的第一次位置從int開始 stripos str,search,int 函式返回字串在另乙個字串中第一次出現的位置。該函式對大小寫不敏感 strrpos str,search,int 查詢search在 s...

php 字串處理

一 字串格式化 1.trim 可以出去字串開始位置和結束位置的空格,並返回結果字串 ltrim 除去左邊空格 rtrim 除去右邊空格 2.nl2br 用代替字串中的換行符 3.printf 將乙個格式化的字串輸出到瀏覽器中 sprintf 返回乙個格式化的字串 例 printf total amo...