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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php查看session内容的函数
Aug 27 PHP
PHP 文件上传全攻略
Apr 28 PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
php格式化日期实例分析
Nov 12 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
php图片上传类 附调用方法
May 15 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
javascript动态修改Li节点值的方法
2015/01/20 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python简单获取数组元素个数的方法
2015/07/13 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
Python控制Firefox方法总结
2019/06/03 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python关于反射的实例代码分享
2020/02/20 Python
CSS3 简写animation
2012/05/10 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
历史专业学生的自我评价
2014/02/28 职场文书
个人银行贷款担保书
2014/04/01 职场文书
实习生岗位职责
2014/04/12 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
MySQL约束超详解
2021/09/04 MySQL
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS