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

Mat*_*ens 67 php string alphabet

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

cod*_*ict 117

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

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

$str = 'z';
echo ++$str; // prints 'aa' 
Run Code Online (Sandbox Code Playgroud)

正如所看到的增加'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];
}
Run Code Online (Sandbox Code Playgroud)

  • 在执行此操作时,您应该考虑区域设置.每个人的字母表都不一样. (4认同)
  • 有没有办法得到以前的信? - 不工作 (2认同)

nic*_*ckf 16

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

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

您还可以使用PHP的range()功能:

$chars = range('a', 'z');  // ['a', 'b', 'c', 'd', ...]
Run Code Online (Sandbox Code Playgroud)


Cha*_*rch 8

那么,这取决于你想要对"边缘情况"做些什么.当角色是z或时,你期望什么结果Z?你想要同一案件的下一个字母,还是下一个字母,期间?

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

$next_character = chr(ord($current_character) + 1);
Run Code Online (Sandbox Code Playgroud)

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


根据评论编辑:

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

if ($next_character == '[')
    $next_character = 'A';
else if ($next_character == '{')
    $next_character = 'a';
Run Code Online (Sandbox Code Playgroud)

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


Ana*_*nax 5

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

<?php
    $next = chr(ord($prev)+1);
?>
Run Code Online (Sandbox Code Playgroud)