PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】


Posted in PHP onJanuary 13, 2017

本文实例总结了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.3water.com/code/3water_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程序设计有所帮助。

PHP 相关文章推荐
php桌面中心(二) 数据库写入
Mar 11 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
php经典算法集锦
Nov 14 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 #PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 #PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 #PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 #PHP
php中分页及SqlHelper类用法实例
Jan 12 #PHP
PHP生成图片验证码功能示例
Jan 12 #PHP
PHP中字符串长度的截取用法示例
Jan 12 #PHP
You might like
PHP加密解密字符串汇总
2015/04/26 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
Javascript拓展String方法小结
2013/07/08 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
介绍一下sql server的安全性
2014/08/10 面试题
会计专业自我鉴定范文
2013/10/06 职场文书
大学生求职简历的自我评价范文
2013/10/12 职场文书
采购员岗位职责
2013/11/15 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
企业法人代表任命书
2014/06/06 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
骨干教师申报材料
2014/12/17 职场文书
搞笑老公保证书
2015/02/26 职场文书
事业单位岗位说明书
2015/10/08 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL