繁体   English   中英

使用PHP获取字母表中下一个字母的最有效方法

[英]Most efficient way to get next letter in the alphabet using PHP

给定从a到z的任何字符,使用PHP获取字母表中下一个字母的最有效方法是什么?

看来,最有效的方法是增加字符串变量。

$str = 'a';
echo ++$str; // prints 'b'

$str = 'z';
echo ++$str; // prints 'aa' 

正如看到递增'z''aa'如果你不想要这个但是想要重置得到'a'你可以简单地检查结果字符串的长度,如果它>1重置它。

$ch = 'a';
$next_ch = ++$ch; 
if (strlen($next_ch) > 1) { // if you go beyond z or Z reset to a or A
 $next_ch = $next_ch[0];
}

这取决于你点击Z时你想做什么,但你有几个选择:

$nextChar = chr(ord($currChar) + 1); // "a" -> "b", "z" -> "{"

您还可以使用PHP的range()函数:

$chars = range('a', 'z');  // ['a', 'b', 'c', 'd', ...]

那么,这取决于你想要对“边缘情况”做些什么。 当角色为zZ时,您期望得到什么结果? 你想要同一案件的下一个字母,还是下一个字母,期间?

在不知道答案的情况下,对于最基本的情况,你可以这样做:

$next_character = chr(ord($current_character) + 1);

但是当你在Z这会给你[ ,而z会根据ASCII值给你{


根据评论编辑:

如果你需要同一个案例的下一个字符,你可以在上面的行之后添加简单的检查:

if ($next_character == '[')
    $next_character = 'A';
else if ($next_character == '{')
    $next_character = 'a';

这些都是非常简单的操作,我真的不担心这样的情况下的效率。

使用ord()和chr()怎么样?

<?php
    $next = chr(ord($prev)+1);
?>

由于在这种情况下我只关心小写字符,因此我将根据此处发布的答案使用以下代码:

function nextLetter(&$str) {
 $str = ('z' === $str ? 'a' : ++$str);
}

谢谢你的帮助,伙计们!

$val = 'z';
echo chr((((ord($val) - 97) + 1) % 26) + 97);

好,易于 :-)

创建所有字母的数组,搜索现有字母并返回其下一个字母。 如果你到达最后一封信返回第一个字母。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM