如何在不增加的情况下按字母顺序获取下一个字母? (php)

Posted

技术标签:

【中文标题】如何在不增加的情况下按字母顺序获取下一个字母? (php)【英文标题】:How can I get the next letter alphabetically without incrementing? (php) 【发布时间】:2012-05-05 14:57:02 【问题描述】:
for ($i=A;$i<L;$i++)                   
    echo $i;
    echo '->';
    echo ++$i;
    echo ', ';

给我:

A->B, C->D, E->F, G->H, I->J, K->L

我想要的是:

A->B, B->C, C->D, D->E, E->F, F->G

最简单的方法是什么?

【问题讨论】:

@shiplu.mokadd.im:坏主意。 ++ 也适用于 php 中的递增字符串。 + 1 没有。 【参考方案1】:

简单:

for ($i=A;$i<L;)  // remove loop increment                 
    echo $i;
    echo '->';
    echo ++$i;
    echo ', ';

【讨论】:

【参考方案2】:

在递增之前复制值怎么样:

for ($i = 'A'; $i < 'L'; $i++)                    
    $j = $i;
    $j++;
    echo "$i->$j, ";

附言。你真的应该引用你的字符串常量。否则,您的日志将充满如下警告:

PHP Notice:  Use of undefined constant A - assumed 'A' in - on line 2
PHP Notice:  Use of undefined constant L - assumed 'L' in - on line 2

【讨论】:

这就是我最终要做的,尽管其他的也可以。【参考方案3】:

使用 range() 将字母表作为数组获取,然后使用适当的 int i++ 增量。

【讨论】:

【参考方案4】:

正如 Julien 所说,范围很性感:

$range = range('A', 'L');

// Had to subtract one from loop iteration total, otherwise the $i + 1 
// would throw an undefined index notice
for ($i = 0, $count = count($range); $i < ($count - 1); $i++) 
    echo sprintf('%s->%s,', $range[$i], $range[($i + 1)]);

更多关于range的信息。

【讨论】:

以上是关于如何在不增加的情况下按字母顺序获取下一个字母? (php)的主要内容,如果未能解决你的问题,请参考以下文章

如何在忽略大小写的情况下按字母顺序排序?

R:如何在不使用循环的情况下按唯一向量顺序查找所有重复向量值的索引?

在不更改属性顺序的情况下获取 XML

我可以在不重置浏览器状态的情况下按顺序运行多个 RSpec/Selenium 测试吗?

如何在没有递归或堆栈但使用父指针的情况下按顺序遍历 BST?

如何在不考虑时间的情况下按日期时间列分组