In PHP development, it's common to encounter situations where numbers need to be converted into letters, such as generating Excel column names, handling student IDs, or creating custom numbering systems. This guide introduces an efficient implementation with practical code examples.
There is a fixed relationship between letters and numbers in the ASCII table. For example, the ASCII code for uppercase 'A' is 65, 'B' is 66, and so on. Using this rule, we can perform a simple calculation to map numbers to their corresponding letters.
function numberToLetter($number) {
$letter = chr($number + 64); // Convert number to corresponding ASCII letter
return $letter;
}
// Test example
$number = 1;
$letter = numberToLetter($number);
echo "Number {$number} corresponds to letter {$letter}"; // Output: Number 1 corresponds to letter A
The example above uses the chr() function to combine numeric values with ASCII codes, effectively converting numbers to letters. This approach is simple and works well for values between 1 and 26.
When dealing with numbers greater than 26, you may need to generate multi-letter combinations, similar to Excel columns (e.g., 27 → AA, 28 → AB). This can be done using loops and modulus operations.
function numberToLetters($number) {
$letters = "";
while ($number > 0) {
$remainder = ($number - 1) % 26;
$letters = chr($remainder + 65) . $letters;
$number = ($number - $remainder - 1) / 26;
}
return $letters;
}
// Test example
$number = 27;
$letters = numberToLetters($number);
echo "Number {$number} corresponds to letter {$letters}"; // Output: Number 27 corresponds to letter AA
By repeatedly applying modulus and division operations, we can derive each letter in the resulting sequence. This method efficiently handles any size of number and is often used in generating sequence labels or identifiers.
This article introduced two PHP methods for converting numbers to letters: one for simple one-to-one mappings and another for multi-letter conversions. Using basic ASCII arithmetic, these techniques provide an efficient and flexible solution applicable in spreadsheets, numbering systems, and custom encodings.