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 相关文章推荐
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
mysql5详细安装教程
Jan 15 PHP
PHP中实现汉字转区位码应用源码实例解析
Jun 14 PHP
PHP异步调用socket实现代码
Jan 12 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
两种php实现图片上传的方法
Jan 22 PHP
php简单复制文件的方法
May 09 PHP
php+ajax注册实时验证功能
Jul 20 PHP
Redis构建分布式锁
Mar 28 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 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的SQL注入过程分析
2012/01/06 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
PHP数组相关函数汇总
2015/03/24 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
laravel学习教程之关联模型
2016/07/30 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python3实现多线程聊天室
2018/12/12 Python
使用python实现简单五子棋游戏
2019/06/18 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
什么是servlet链?
2014/07/13 面试题
组织关系转移介绍信
2014/01/16 职场文书
北京大学自荐信范文
2014/01/28 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
初一学生期末评语
2014/04/24 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
学籍证明模板
2014/11/21 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
利用Apache Common将java对象池化的问题
2022/06/16 Servers
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL