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 相关文章推荐
提问的智慧
Oct 09 PHP
php+mysql写的简单留言本实例代码
Jul 25 PHP
php 数组使用详解 推荐
Jun 02 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
php实现四舍五入的方法小结
Mar 03 PHP
php文件操作相关类实例
Jun 18 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 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 Static 关键字之旅模式
2015/11/13 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
python图片验证码生成代码
2016/07/02 Python
python matplotlib画图实例代码分享
2017/12/27 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
python scatter函数用法实例详解
2020/02/11 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
params有什么用
2016/03/01 面试题
大学生应聘推荐信范文
2013/11/19 职场文书
企业业务员岗位职责
2014/03/14 职场文书
车间安全生产标语
2014/06/06 职场文书
关于旅游的活动方案
2014/08/15 职场文书
教师个人成长总结
2015/02/11 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Python实现学生管理系统(面向对象版)
2021/06/24 Python