Самый эффективный способ получить следующую букву в алфавите с помощью PHP

Учитывая какой-либо символ от до z, что самый эффективный путь состоит в том, чтобы получить следующую букву в алфавите с помощью PHP?

67
задан Mathias Bynens 20 April 2010 в 07:34
поделиться

7 ответов

Самый эффективный способ сделать это в my Считается, что для нужно просто увеличить строковую переменную.

$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];
}
117
ответ дан 24 November 2019 в 14:32
поделиться

Поскольку в данном случае меня интересуют только строчные буквы, я использую следующий код на основе ответов, размещенных здесь:

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

Спасибо за помогите, ребята!

3
ответ дан 24 November 2019 в 14:32
поделиться
$val = 'z';
echo chr((((ord($val) - 97) + 1) % 26) + 97);

Красиво и просто: -)

3
ответ дан 24 November 2019 в 14:32
поделиться

Ну, это зависит от того, что именно вы хотите делать с «крайними случаями». Какого результата вы ожидаете, если символом является 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';

Это очень простые операции, я бы не стал беспокоиться о них эффективность в таком случае.

8
ответ дан 24 November 2019 в 14:32
поделиться

Это зависит от того, что вы хотите сделать при нажатии Z, но у вас есть несколько вариантов:

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

Вы также можете использовать функцию PHP range () :

$chars = range('a', 'z');  // ['a', 'b', 'c', 'd', ...]
16
ответ дан 24 November 2019 в 14:32
поделиться

Как насчет использования ord () и chr () ?

<?php
    $next = chr(ord($prev)+1);
?>
5
ответ дан 24 November 2019 в 14:32
поделиться

Создайте массив всех букв, найдите существующую букву и верните ее следующую букву. Если вы дойдете до последней буквы, верните первую букву.

0
ответ дан 24 November 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: