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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
PHP数据库链接类(PDO+Access)实例分享
Dec 05 PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
微信自定义分享php代码分析
Nov 24 PHP
完美的php分页类
Oct 24 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
php适配器模式简单应用示例
Oct 23 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 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 mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
js数组去重的hash方法
2016/12/22 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
高一新生军训方案
2014/05/12 职场文书
干部鉴定材料
2014/05/18 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
我的收音机情缘
2022/04/05 无线电
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers