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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
聊天室php&amp;mysql(二)
Oct 09 PHP
PHP高级OOP技术演示
Aug 27 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
微信API接口大全
Apr 15 PHP
php简单图像创建入门实例
Jun 10 PHP
smarty中常用方法实例总结
Aug 07 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 PHP
PHP7变量处理机制修改
Mar 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
php中用memcached实现页面防刷新功能
2014/08/19 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
JS控件的生命周期介绍
2012/10/22 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python编程中的异常处理教程
2015/08/21 Python
Python实现简单字典树的方法
2016/04/29 Python
python正则实现提取电话功能
2018/02/24 Python
python调用c++传递数组的实例
2019/02/13 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python实现可变变量名方法详解
2019/07/01 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
网络程序员自荐信
2014/01/25 职场文书
文艺晚会主持词
2014/03/24 职场文书
小马王观后感
2015/06/11 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android