当前位置:Gxlcms > PHP教程 > 解读PHP函数strrev()以外的三种逆序排列方法_PHP教程

解读PHP函数strrev()以外的三种逆序排列方法_PHP教程

时间:2021-07-01 10:21:17 帮助过:12人阅读

我们在运用

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

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

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

    1、二分法

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


    2、循环法

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

    3、递归法

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

    以上就是PHP函数strrev()的具体用法,以及另外三种逆序排列的实现方法。


    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446151.htmlTechArticle我们在运用 关于字符串的逆序排列,PHP函数strrev()的测试代码如下: header('Content-type:text/html; charset = utf -8'); $ str = implode ('',range(9,0)); prin...

    人气教程排行