Home > Backend Development > PHP Tutorial > PHP string sorting in reverse order [strrev function, dichotomy, loop method, recursive method]

PHP string sorting in reverse order [strrev function, dichotomy, loop method, recursive method]

高洛峰
Release: 2023-03-04 19:28:02
Original
1268 people have browsed it

The example in this article summarizes the implementation method of reverse order arrangement of PHP strings. Share it with everyone for your reference, the details are as follows:

Regarding the reverse order of strings, the simplest test code using the PHP function strrev() is as follows:

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

How to implement this without using the built-in PHP function strrev()? Three additional methods (bisection method, loop method, recursive method) are given here, but no performance test is performed.

(PS: In order to make it easier for everyone to read the code, the online php code formatting tool http://tools.jb51.net/code/jb51_php_format of this site is used for formatting.)

1. Dichotomy method

/**
* 二分法实现字符串逆序排列
* @param string $str 源字符串
* @return string 返回逆序后的字符串
*/
function reverse($str=&#39;&#39;) {
  $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;
}
Copy after login

2. Circular method

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


##3. Recursive method

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

I hope this article will be helpful to everyone in PHP programming.

For more PHP string arrangement in reverse order [strrev function, dichotomy, loop method, recursive method] related articles, please pay attention to the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template