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
十天学会php(3)
Oct 09 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
PHP中的string类型使用说明
Jul 27 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
php 指定范围内多个随机数代码实例
Jul 18 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
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
Javascript 函数对象的多重身份
2009/06/28 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
python实现简单图片物体标注工具
2019/03/18 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python的等深分箱实例
2019/11/22 Python
Python实现中值滤波去噪方式
2019/12/18 Python
appium+python adb常用命令分享
2020/03/06 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
颁奖典礼主持词
2014/03/25 职场文书
摄影展策划方案
2014/06/02 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
教师网络培训心得体会
2016/01/09 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS