Increment letters like number by certain value in php

前端 未结 2 1734
时光取名叫无心
时光取名叫无心 2021-01-20 15:31

In php if I writ

$c=\'A\';
$c++;
it increments to \'B\' but if I want to increment it with 2 ,3 or more , eg: $c+2 or $c+3 ,

相关标签:
2条回答
  • 2021-01-20 16:03

    If you want to increment the character by 2, adding won't work.

    Try this instead:

    echo chr(ord($c) + 2)
    

    Explanation:

    1. Calculate the ascii value of $c using ord($c)
    2. Add the ascii value by 2.
    3. Convert this achii value to string using chr() function.

    Refer to ord() and chr() functions.

    Note: As Mark Baker specifies, this will only work to Z and not beyond.

    0 讨论(0)
  • 2021-01-20 16:10

    Incrementing letters will only work with the ++ incrementor operator, not with + addition.

    If you want to continue using an incrementor, you can use a loop:

    $column = 'AH';
    $step = 7; // number of columns to step by
    for($ = 0; $i < $step; $i++) {
        $column++;
    }
    

    However, PHP's character incrementor won't work backwards, so you couldn't use a negative step value


    If you want to use addition rather than a loop, then you need to convert that column to a numeric value, do the addition, then convert back

    $column = 'AH';
    $step = 7; // number of columns to step by
    $columnNumber = PHPExcel_Cell::columnIndexFromString($column) + $step;
    $column = PHPExcel_Cell::stringFromColumnIndex($columnNumber - 1);
    

    Which has the added benefit of allowing you to use negative step values

    0 讨论(0)
提交回复
热议问题