Я пытаюсь получить функцию для увеличения альфа вверх в PHP, скажем, A-> ZZ или AAA -> ZZZ со всеми вариациями между ними, т.е. A, B, C … AA, AB, AC..ZX, ZY, ZZ и т. Д.
Следующий код иногда работает, но затем в некоторых случаях ломается, этот пример работает отлично.
$from = "A";
$to = "ZZ";
while(strnatcmp($from, $to) <= 0) {
echo $from++;
}
Пока это не работает, как ожидалось.
$from = "A";
$to = "BB";
while(strnatcmp($from, $to) <= 0) {
echo $from++;
}
Выход:
First: A B C D .. AA AB AC .. ZX ZY ZZ
Second: A B
Кто-нибудь знает, что здесь происходит? или, возможно, другой подход к моей проблеме.
Спасибо
Это работает, но останавливается на BA
… так что вы можете сказать $to = 'BC';
или вы можете бросить в $to++;
сразу после того, как вы объявите $to
,
$from= 'A';
$to = 'BB';
while ($from !== $to) {
echo $from++;
}
$from= 'A';
$to = 'BB';
$to++;
while ($from !== $to) {
echo $from++;
}
Если вы используете PHP 5.5, вы можете использовать генератор.
function alphaRange($from, $to) {
++$to;
for ($i = $from; $i !== $to; ++$i) {
yield $i;
}
}
foreach (alphaRange('A', 'BB') as $char) {
echo $char;
}
Это должно работать для вас:
<?php
$from = "AA";
$to = "BB";
while(strnatcmp($from, $to) <= 0)
echo $from++ . "<br />";
?>
Выход:
AA...BB
Если вы тоже хотите сначала алфавит, скопируйте его перед кодом сверху:
$from = "A";
$to = "Z";
while(strnatcmp($from, $to) <= 0)
echo $from++ . "<br />";