鉴于从a到z的任何字符,使用PHP获取字母表中下一个字母的最有效方法是什么?
答案 0 :(得分:114)
在我的意见中执行此操作的最有效方法是 只增加 字符串变量。
$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];
}
答案 1 :(得分:16)
这取决于你点击Z时想要做什么,但你有几个选择:
$nextChar = chr(ord($currChar) + 1); // "a" -> "b", "z" -> "{"
您还可以使用PHP的range()
函数:
$chars = range('a', 'z'); // ['a', 'b', 'c', 'd', ...]
答案 2 :(得分:8)
嗯,这取决于你想要对“边缘情况”做什么。当角色为z
或Z
时,您会得到什么结果?你想要相同案例的下一个字母,还是下一个字母,句号?
在不知道答案的情况下,对于最基本的情况,你可以这样做:
$next_character = chr(ord($current_character) + 1);
但是当你在Z
时,这会给你[
,z
会根据ASCII值给你{
。
根据评论编辑:
如果您需要相同案例的下一个字符,您可以在上面一行之后添加简单的检查:
if ($next_character == '[')
$next_character = 'A';
else if ($next_character == '{')
$next_character = 'a';
这些操作非常简单,在这种情况下,我真的不担心效率。
答案 3 :(得分:5)
如何使用ord() and chr()?
<?php
$next = chr(ord($prev)+1);
?>
答案 4 :(得分:3)
由于在这种情况下我只关心小写字符,因此我将根据此处发布的答案使用以下代码:
function nextLetter(&$str) {
$str = ('z' === $str ? 'a' : ++$str);
}
感谢您的帮助,伙计们!
答案 5 :(得分:3)
$val = 'z';
echo chr((((ord($val) - 97) + 1) % 26) + 97);
美好而轻松: - )
答案 6 :(得分:0)
创建所有字母的数组,搜索现有字母并返回其下一个字母。如果你到达最后一个字母,则返回第一个字母。