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模板页面中分页代码的解析
Feb 06 PHP
PHP中的array数组类型分析说明
Jul 27 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 PHP
PHP如何解决微信文章图片防盗链
Dec 09 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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
sql注入与转义的php函数代码
2013/06/17 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python怎么判断模块安装完成
2020/06/19 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
int和Integer有什么区别
2013/05/25 面试题
有限公司股东合作协议书
2014/10/29 职场文书
个人年度总结报告
2015/03/09 职场文书
市场部岗位职责范本
2015/04/15 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS