探討PHP字符串顛倒順序的實(shí)現(xiàn)方法
我們?nèi)绾卧?a >PHP編碼中實(shí)現(xiàn)字符串順序的顛倒呢?在這篇文章中,我們將為大家詳細(xì)介紹有關(guān)PHP字符串顛倒順序的實(shí)現(xiàn)方法,希望對大家有所幫助。
首先,php自帶了一個字符串顛倒順序的函數(shù)。
PHP字符串顛倒順序代碼:
- $str = 'To Change The template';
- echo strrev($str);
- // 結(jié)果:etalpmet ehT egnahC oT
其次,使用遞歸函數(shù)實(shí)現(xiàn)。當(dāng)然效率很低!PHP字符串顛倒順序代碼:
- function reverse_r($str)
- { if (strlen($str) > 0)
- { reverse_r(substr($str, 1));
- }
- echo substr($str, 0, 1);
- return;}echo reverse_r($str);
第三,使用循環(huán)實(shí)現(xiàn),效率有很大的提高。PHP字符串顛倒順序代碼:
- /** * 利用循環(huán)實(shí)現(xiàn)字符串逆序排列 */
- function reverse_i($str)
- { for ($i = 1; $i < = strlen($str); $i++)
- { echo substr($str, -$i, 1); } return;
- }
- echo reverse_i($str);
***,使用二分法實(shí)現(xiàn),效率有更大的提高。PHP字符串顛倒順序代碼:
- /** * 使用二分法來實(shí)現(xiàn)字符串顛倒順序。 */
- function reverse_a($str)
- { $forNum = ceil(strlen($str)/2);
- $strLen = strlen($str);
- for ( $i = 1; $i < = $forNum; $i++)
- { if($i <= $strLen-$i)
- { $tmp = $str[$i-1]; $str[$i-1] =
$str[$strLen-$i]; $str[$strLen-$i]= $tmp;
}- }
- return $str; }
- // 注:其實(shí)按照二分法來實(shí)現(xiàn),理論上效率會提升一半,但是這個涉及
- //到數(shù)組的指針操作,實(shí)際效率會怎樣?
難說。echo "二分實(shí)現(xiàn):\t",reverse_a($str);
#t#***一種PHP字符串顛倒順序的方法涉及到三個知識點(diǎn):
1. ceil()函數(shù):進(jìn)一法取整。如:5/4=1.25,ceil(5/4)=2,不管小數(shù)位是否大于0.5,均進(jìn)一取整。
2. 字符串當(dāng)成數(shù)組訪問,如$str[0],$str[1]…可以訪問字符串$str的***個字符、第二個字符…
3. 二分法。PHP字符串顛倒順序的方法3需要循環(huán)的次數(shù)是字符串的長度,而方法4則是字符串長度的一半,所以效率會提高一倍(理論上)。