【问题标题】:How can I get the next letter alphabetically without incrementing? (php)如何在不增加的情况下按字母顺序获取下一个字母? (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 没有。

标签: php increment letters


【解决方案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的信息。

      【讨论】:

        猜你喜欢
        • 2010-11-04
        • 2017-08-23
        • 2011-11-20
        • 2012-08-26
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 2021-09-25
        • 2016-04-28
        相关资源
        最近更新 更多