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

给定任何字符从一个到Z,什么是最有效的方式来获取字母下一个字母使用PHP?

看来,这样做的最有效的方法就是增加stringvariables。

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

如所看到的增加'z'给予'aa'如果你不想要这个,而是想重新设置一个'a'你可以简单地检查结果string的长度,如果>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时想做什么,但是你有几个select:

 $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); 

好,易于 :-)

创build所有字母的数组,search现有的字母并返回其下一个字母。 如果你到达最后一个字母返回第一个字母。