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网站基础优化方法小结
Sep 29 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
深入PHP数据缓存的使用说明
May 10 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
php+ajax登录跳转登录实现思路
Jul 31 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 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 mssql 数据库分页SQL语句
2008/12/16 PHP
php实现的操作excel类详解
2016/01/15 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python的IDEL增加清屏功能实例
2017/06/19 Python
python距离测量的方法
2018/03/06 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
专项资金申请报告
2015/05/15 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
pandas中关于apply+lambda的应用
2022/02/28 Python