찾다
php教程php手册解读PHP函数strrev()以外的三种逆序排列方法
解读PHP函数strrev()以外的三种逆序排列方法Jun 13, 2016 am 11:09 AM
php~에 대한기능존재하다우리를준비방법~의해석사용

我们在运用

关于字符串的逆序排列,PHP函数strrev()的测试代码如下:

<ol class="dp-xml">
<li class="alt"><span><span>header('Content-type: text/html; </span><span class="attribute">charset</span><span>=</span><span class="attribute-value">utf</span><span>-8');  </span></span></li>
<li>
<span>$</span><span class="attribute">str</span><span> = </span><span class="attribute-value">implode</span><span>('', range(9, 0));  </span>
</li>
<li class="alt">
<span>print '</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span class="tag"><span class="tag-name">strong</span><span class="tag">></span><span>Before reversed: </span><span class="tag"></span><span class="tag-name">strong</span><span class="tag">></span><span>'.$str.'</span><span class="tag"><span> /p</span><span class="tag">></span><span>';  </span></span></span></span>
</li>
<li>
<span>print '</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span class="tag"><span> </span><span class="tag-name">strong</span><span class="tag">></span><span>After reversed: </span><span class="tag"><span> /strong</span><span class="tag">></span><span>'.strrev($str).'</span><span class="tag"><span> /p</span><span class="tag">></span><span>';  </span></span></span></span></span>
</li>
<li class="alt"><span>/*  </span></li>
<li><span>输出如下:  </span></li>
<li class="alt"><span>Before reversed: 9876543210  </span></li>
<li><span>After reversed: 0123456789  </span></li>
<li class="alt"><span>*/ </span></li>
</ol>


如果不用内置的PHP函数strrev(),又该如何实现呢?这里试验了3种方法(二分法、循环法、递归法),但没有进行性能测试。

1、二分法

<ol class="dp-xml">
<li class="alt"><span><span>/**  </span></span></li>
<li><span>* 二分法实现字符串逆序排列  </span></li>
<li class="alt"><span>* @param string $str 源字符串  </span></li>
<li><span>* @return string 返回逆序后的字符串  </span></li>
<li class="alt"><span>*/  </span></li>
<li>
<span>function reverse($</span><span class="attribute">str</span><span>=</span><span class="attribute-value">''</span><span>) {  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">len</span><span> = </span><span class="attribute-value">strlen</span><span>($str);//不能使用count或sizeof  </span>
</li>
<li>
<span>$</span><span class="attribute">mid</span><span> = </span><span class="attribute-value">floor</span><span>($len/2);  </span>
</li>
<li class="alt">
<span>for ($</span><span class="attribute">i</span><span>=</span><span class="attribute-value">0</span><span>; $i</span><span class="tag"><span>$mid; $i++) {  </span></span>
</li>
<li>
<span>$</span><span class="attribute">temp</span><span> = $str[$i];  </span>
</li>
<li class="alt"><span>$str[$i] = $str[$len-$i-1];  </span></li>
<li><span>$str[$len-$i-1] = $temp;  </span></li>
<li class="alt"><span>}  </span></li>
<li><span>return $str;  </span></li>
<li class="alt"><span>} </span></li>
</ol>


2、循环法

<ol class="dp-xml">
<li class="alt"><span><span>/**  </span></span></li>
<li><span>* 循环实现对字符串的逆序排列(效率比二分法低)  </span></li>
<li class="alt"><span>* @param string $str 源字符串  </span></li>
<li><span>* @return string 返回逆序后的字符串  </span></li>
<li class="alt"><span>*/  </span></li>
<li>
<span>function reverse($</span><span class="attribute">str</span><span>=</span><span class="attribute-value">''</span><span>) {  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">result</span><span> = </span><span class="attribute-value">''</span><span>;  </span>
</li>
<li>
<span>for ($</span><span class="attribute">i</span><span>=</span><span class="attribute-value">1</span><span>; $i</span><span class="tag"><span>=strlen($str); $i++) {  </span></span>
</li>
<li class="alt">
<span>$result </span><span class="attribute">.</span><span>= </span><span class="attribute-value">substr</span><span>($str, -$i, 1);  </span>
</li>
<li><span>}  </span></li>
<li class="alt"><span>return $result;  </span></li>
<li><span>}  </span></li>
</ol>

3、递归法

<ol class="dp-xml">
<li class="alt"><span><span>/**  </span></span></li>
<li><span>* 递归实现对字符串的逆序排列(效率低)  </span></li>
<li class="alt"><span>* @param string $str 源字符串  </span></li>
<li><span>* @return string 返回逆序后的字符串  </span></li>
<li class="alt"><span>*/  </span></li>
<li>
<span>function reverse($</span><span class="attribute">str</span><span>=</span><span class="attribute-value">''</span><span>) {  </span>
</li>
<li class="alt">
<span>static $</span><span class="attribute">result</span><span> = </span><span class="attribute-value">''</span><span>;  </span>
</li>
<li><span>/* 用堆栈来理解递归调用 */  </span></li>
<li class="alt">
<span>if (strlen($str) </span><span class="tag">></span><span> 0) {  </span>
</li>
<li><span>reverse(substr($str, 1));  </span></li>
<li class="alt">
<span>$result </span><span class="attribute">.</span><span>= </span><span class="attribute-value">substr</span><span>($str, 0, 1);//此句必须放在上一语句之后  </span>
</li>
<li><span>}  </span></li>
<li class="alt"><span>return $result;  </span></li>
<li><span>}  </span></li>
</ol>

以上就是PHP函数strrev()的具体用法,以及另外三种逆序排列的实现方法。


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

Win11系统下如何显示文件后缀?详细解读Win11系统下如何显示文件后缀?详细解读Mar 09, 2024 am 08:24 AM

Win11系统下如何显示文件后缀?详细解读在Windows11操作系统中,文件后缀是指文件名后面的点及其后面的字符,用来表示文件的类型。在默认情况下,Windows11系统会隐藏文件的后缀,这样在文件资源管理器中只能看到文件的名称而无法直观地了解文件的类型。然而,对于一些用户来说,显示文件后缀是非常必要的,因为它能帮助他们更好地辨识文件类型以及进行相关操

电脑中的cookie数据在哪个文件夹?详细解读电脑中的cookie数据在哪个文件夹?详细解读Jan 19, 2024 am 10:19 AM

随着互联网的不断发展,人们越来越离不开浏览器。而在浏览器中,大家都会或多或少用到cookie这个东西。然而,很多人并不知道cookie数据在哪个文件夹中,今天就来详细解读一下。首先,我们需要了解cookie是什么。简单来说,cookie是由浏览器存储的一段文本信息,用于保存用户在浏览器中的一些个人设置或者记录用户的历史操作等等。当用户再次打开同一个网站时,c

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php怎么将url的参数转化成数组php怎么将url的参数转化成数组Apr 21, 2022 pm 08:50 PM

转化方法:1、使用“mb_substr($url,stripos($url,"?")+1)”获取url的参数部分;2、使用“parse_str("参数部分",$arr)”将参数解析到变量中,并传入指定数组中,变量名转为键名,变量值转为键值。

php怎么去除首位数字php怎么去除首位数字Apr 20, 2022 pm 03:23 PM

去除方法:1、使用substr_replace()函数将首位数字替换为空字符串即可,语法“substr_replace($num,"",0,1)”;2、用substr截取从第二位数字开始的全部字符即可,语法“substr($num,1)”。

Linux Bashrc是什么?详细解读Linux Bashrc是什么?详细解读Mar 20, 2024 pm 09:18 PM

LinuxBashrc是Linux系统中的一个配置文件,用于设置用户的Bash(BourneAgainShell)环境。Bashrc文件存储了用户登录时所需的环境变量、启动脚本等信息,可以定制化用户的Shell环境。在Linux系统中,每个用户都有一个对应的Bashrc文件,位于用户的家目录下的隐藏文件夹中。Bashrc文件的作用主要有以下几点:设置环

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.