3v4l.org

run code in 300+ PHP versions simultaneously
<?php function letterToColumnNumber(string $letters, int $indexStart = 0): int { static $ordA = ord('A'); $length = strlen($letters); $number = 0; $pow = 1; for ($i = $length - 1; $i >= 0; $i--) { // calculate the value of each letter and add to the total $number += (ord($letters[$i]) - $ordA + 1) * $pow; $pow *= 26; } return $number - (1 - $indexStart); } function rangeStringToRangeArray(string $range, int $indexStart = 0): array { // Parse Excel range expression if (sscanf($range, '%[A-Z]%d:%[A-Z]%d', $startCol, $startRow, $endCol, $endRow) != 4) { throw new Exception('Invalid range expression'); } return [ [ letterToColumnNumber($startCol, $indexStart), $startRow - (1 - $indexStart) ], [ letterToColumnNumber($endCol, $indexStart), $endRow - (1 - $indexStart) ] ]; } echo json_encode(rangeStringToRangeArray('A1:B2')); // returns [[0,0],[1,1]] echo json_encode(rangeStringToRangeArray('A1:B2', 1)); // returns [[1,1],[2,2]]
Output for 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
[[0,0],[1,1]][[1,1],[2,2]]
Output for 8.1.0 - 8.1.33, 8.2.0 - 8.2.29
Fatal error: Constant expression contains invalid operations in /in/679Dp on line 5
Process exited with code 255.

preferences:
68.61 ms | 407 KiB | 5 Q