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 相关文章推荐
Session的工作方式
Oct 09 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PDO::getAttribute讲解
Jan 28 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 PHP
如何使用php生成zip压缩包
Apr 21 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二分法在IP地址查询中的应用
2008/08/12 PHP
mysql 性能的检查和优化方法
2009/06/21 PHP
测试php函数的方法
2013/11/13 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
javascript 常用代码技巧大收集
2009/02/25 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
全面分析Python的优点和缺点
2018/02/07 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
《争吵》教学反思
2014/02/15 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
幼师求职自荐信
2015/03/26 职场文书
安全生产培训心得体会
2016/01/18 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
在js中修改html body的样式
2021/11/11 Javascript
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫