如何实现php字符串逆序排列功能?

如何实现php字符串逆序排列功能?

本文实例总结了PHP字符串逆序排列实现方法。分享给大家供大家参考,具体如下:

关于字符串的逆序排列,最简单的使用PHP函数strrev()的测试代码如下:

header('Content-type: text/html; charset=utf-8');
$str = implode('', range(9, 0));
print '< p><strong>Before reversed: </strong>'.$str.'< /p>';
print '< p>< strong>After reversed: < /strong>'.strrev($str).'< /p>';
/*
输出如下:
Before reversed: 9876543210
After reversed: 0123456789
*/

如果不用内置的PHP函数strrev(),又该如何实现呢?这里另外给出了3种方法(二分法、循环法、递归法),但没有进行性能测试。

PS:这里为了方便大家阅读代码,使用了本站在线php代码格式化工具http://tools.jb51.net/code/jb51_php_format进行了格式化处理。)

1、二分法

/**
* 二分法实现字符串逆序排列
* @param string $str 源字符串
* @return string 返回逆序后的字符串
*/
function reverse($str='') {
 $len = strlen($str);
 //不能使用count或sizeof
 $mid = floor($len/2);
 for ($i=0; $i<$mid; $i++) {
  $temp = $str[$i];
  $str[$i] = $str[$len-$i-1];
  $str[$len-$i-1] = $temp;
 }
 return $str;
}

2、循环法

/**
* 循环实现对字符串的逆序排列(效率比二分法低)
* @param string $str 源字符串
* @return string 返回逆序后的字符串
*/
function reverse($str='') {
 $result = '';
 for ($i=1; $i<=strlen($str); $i++) {
  $result .= substr($str, -$i, 1);
 }
 return $result;
}

3、递归法

/**
* 递归实现对字符串的逆序排列(效率低)
* @param string $str 源字符串
* @return string 返回逆序后的字符串
*/
function reverse($str='') {
 static $result = '';
 /* 用堆栈来理解递归调用 */
 if (strlen($str) > 0) {
  reverse(substr($str, 1));
  $result .= substr($str, 0, 1);
  //此句必须放在上一语句之后
 }
 return $result;
}

希望本文所述对大家PHP程序设计有所帮助。