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

开发 后端
PHP函数strrev()可以帮助我们实现数组的逆序排列,在这之外我们还可以用到二分法、循环法、递归法等三种方法来实现这以功能。

我们在运用PHP语言进行实际代码操作时,其内置函数对我们的编码程序起到了很大的作用。今天我们就为大家具体讲解了有关PHP函数strrev()的具体用法。#t#

关于字符串的逆序排列,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. /*  
  6. 输出如下:  
  7. Before reversed: 9876543210  
  8. After reversed: 0123456789  
  9. */ 


如果不用内置的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;  


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()的具体用法,以及另外三种逆序排列的实现方法。

责任编辑:曹凯 来源: longlinfeng.com
相关推荐

2010-02-03 15:46:15

C++函数传递

2017-04-11 15:15:20

CentOSPHP拓展安装

2015-09-25 11:08:44

移动办公BYOD

2015-10-13 15:05:09

BYOD自带设备移动办公

2010-09-02 10:02:17

PHP

2009-12-21 13:37:43

WCF消息交换

2012-08-07 10:02:06

JSP

2019-08-30 17:24:41

microservic微服务

2023-12-25 14:44:52

Java数组

2009-12-04 15:42:57

PHP文件缓存

2009-07-08 12:56:32

编写Servlet

2009-11-26 19:05:04

PHP函数explod

2015-01-05 14:51:45

弹性存He云存储架构UnitedStack

2022-11-30 15:15:48

2022-03-04 14:52:27

云计算开源

2009-12-09 09:48:38

solaris静态路由

2011-06-10 10:43:12

Ubuntu应用安装

2009-05-07 15:02:42

OracleJoin查询

2009-06-23 10:45:18

Hibernate支持

2022-05-30 07:07:35

Java监听文件Java 8
点赞
收藏

51CTO技术栈公众号