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聊天室技术
Oct 09 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP json_decode函数详细解析
Feb 17 PHP
PHP代码优化的53个细节
Mar 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python删除列表中重复记录的方法
2015/04/28 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Python实现随机选择元素功能
2017/09/14 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
python 字典操作提取key,value的方法
2019/06/26 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
电子商务专业实习生自我鉴定
2013/09/24 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
升国旗仪式主持词
2014/03/19 职场文书
校庆活动策划方案
2014/06/05 职场文书
英语教师求职信
2014/06/16 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
工作收入证明范本
2015/06/12 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js