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 csv操作类代码
Dec 14 PHP
php下正则来匹配dede模板标签的代码
Aug 21 PHP
sphinx增量索引的一个问题
Jun 14 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
php字符串分割函数用法实例
Mar 17 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
php 使用 __call实现重载功能示例
Nov 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
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
详解Axios统一错误处理与后置
2018/09/26 Javascript
JS中数据结构之栈
2019/01/01 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
python实现月食效果实例代码
2019/06/18 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
通俗讲解python 装饰器
2020/09/07 Python
Python hashlib模块的使用示例
2020/10/09 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
母婴店促销方案
2014/03/05 职场文书
青春寄语大全
2014/04/09 职场文书
房屋维修协议书范本
2014/09/25 职场文书
庆六一宣传标语
2014/10/08 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
总经理岗位职责
2015/02/04 职场文书
博士给导师的自荐信
2015/03/06 职场文书
看上去很美观后感
2015/06/10 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书