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 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
php 代码优化之经典示例
Mar 24 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 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中使用Select 查询语句的实例
2014/02/19 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
php跨服务器访问方法小结
2015/05/12 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
跟老齐学Python之有点简约的元组
2014/09/24 Python
Django如何配置mysql数据库
2018/05/04 Python
python实现爬取图书封面
2018/07/05 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
python同步两个文件夹下的内容
2019/08/29 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
python 代码运行时间获取方式详解
2020/09/18 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
应届生体育教师自荐信
2013/10/03 职场文书
酒吧员工的岗位职责
2013/11/26 职场文书
读书心得体会
2013/12/28 职场文书
节能减耗标语
2014/06/21 职场文书
会计学专业求职信
2014/07/17 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
初中政治教师教学反思
2016/02/23 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书