3v4l.org

run code in 300+ PHP versions simultaneously
<?php function base26($value) { $name = ''; $value -= 1; for ($exponent = 0; pow(26, $exponent) < $value; $exponent++) { $digitWeight = intval(pow(26, $exponent)); $remainder = $value % intval(pow(26, $exponent + 1)); $digitValue = intval($remainder / $digitWeight); $digitValue += 1; $ascii = 64 + $digitValue; $name = chr($ascii) . $name; echo sprintf("digitValue: %d, ascii: %d, value: %d, remainder: %d\n", $digitValue, $ascii, $value, $remainder); $value -= $digitValue; } return $name; } for ($i = 1; $i < 28; $i++) { echo $i . "->" . base26($i) . "\n"; } foreach (array(51, 52, 53, 77, 78, 79) as $i) { echo $i . "->" . base26($i) . "\n"; }
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
1-> 2-> digitValue: 3, ascii: 67, value: 2, remainder: 2 3->C digitValue: 4, ascii: 68, value: 3, remainder: 3 4->D digitValue: 5, ascii: 69, value: 4, remainder: 4 5->E digitValue: 6, ascii: 70, value: 5, remainder: 5 6->F digitValue: 7, ascii: 71, value: 6, remainder: 6 7->G digitValue: 8, ascii: 72, value: 7, remainder: 7 8->H digitValue: 9, ascii: 73, value: 8, remainder: 8 9->I digitValue: 10, ascii: 74, value: 9, remainder: 9 10->J digitValue: 11, ascii: 75, value: 10, remainder: 10 11->K digitValue: 12, ascii: 76, value: 11, remainder: 11 12->L digitValue: 13, ascii: 77, value: 12, remainder: 12 13->M digitValue: 14, ascii: 78, value: 13, remainder: 13 14->N digitValue: 15, ascii: 79, value: 14, remainder: 14 15->O digitValue: 16, ascii: 80, value: 15, remainder: 15 16->P digitValue: 17, ascii: 81, value: 16, remainder: 16 17->Q digitValue: 18, ascii: 82, value: 17, remainder: 17 18->R digitValue: 19, ascii: 83, value: 18, remainder: 18 19->S digitValue: 20, ascii: 84, value: 19, remainder: 19 20->T digitValue: 21, ascii: 85, value: 20, remainder: 20 21->U digitValue: 22, ascii: 86, value: 21, remainder: 21 22->V digitValue: 23, ascii: 87, value: 22, remainder: 22 23->W digitValue: 24, ascii: 88, value: 23, remainder: 23 24->X digitValue: 25, ascii: 89, value: 24, remainder: 24 25->Y digitValue: 26, ascii: 90, value: 25, remainder: 25 26->Z digitValue: 1, ascii: 65, value: 26, remainder: 0 27->A digitValue: 25, ascii: 89, value: 50, remainder: 24 51->Y digitValue: 26, ascii: 90, value: 51, remainder: 25 52->Z digitValue: 1, ascii: 65, value: 52, remainder: 0 digitValue: 2, ascii: 66, value: 51, remainder: 51 53->BA digitValue: 25, ascii: 89, value: 76, remainder: 24 digitValue: 2, ascii: 66, value: 51, remainder: 51 77->BY digitValue: 26, ascii: 90, value: 77, remainder: 25 digitValue: 2, ascii: 66, value: 51, remainder: 51 78->BZ digitValue: 1, ascii: 65, value: 78, remainder: 0 digitValue: 3, ascii: 67, value: 77, remainder: 77 79->CA
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 1-> 2-> digitValue: 3, ascii: 67, value: 2, remainder: 2 3->C digitValue: 4, ascii: 68, value: 3, remainder: 3 4->D digitValue: 5, ascii: 69, value: 4, remainder: 4 5->E digitValue: 6, ascii: 70, value: 5, remainder: 5 6->F digitValue: 7, ascii: 71, value: 6, remainder: 6 7->G digitValue: 8, ascii: 72, value: 7, remainder: 7 8->H digitValue: 9, ascii: 73, value: 8, remainder: 8 9->I digitValue: 10, ascii: 74, value: 9, remainder: 9 10->J digitValue: 11, ascii: 75, value: 10, remainder: 10 11->K digitValue: 12, ascii: 76, value: 11, remainder: 11 12->L digitValue: 13, ascii: 77, value: 12, remainder: 12 13->M digitValue: 14, ascii: 78, value: 13, remainder: 13 14->N digitValue: 15, ascii: 79, value: 14, remainder: 14 15->O digitValue: 16, ascii: 80, value: 15, remainder: 15 16->P digitValue: 17, ascii: 81, value: 16, remainder: 16 17->Q digitValue: 18, ascii: 82, value: 17, remainder: 17 18->R digitValue: 19, ascii: 83, value: 18, remainder: 18 19->S digitValue: 20, ascii: 84, value: 19, remainder: 19 20->T digitValue: 21, ascii: 85, value: 20, remainder: 20 21->U digitValue: 22, ascii: 86, value: 21, remainder: 21 22->V digitValue: 23, ascii: 87, value: 22, remainder: 22 23->W digitValue: 24, ascii: 88, value: 23, remainder: 23 24->X digitValue: 25, ascii: 89, value: 24, remainder: 24 25->Y digitValue: 26, ascii: 90, value: 25, remainder: 25 26->Z digitValue: 1, ascii: 65, value: 26, remainder: 0 27->A digitValue: 25, ascii: 89, value: 50, remainder: 24 51->Y digitValue: 26, ascii: 90, value: 51, remainder: 25 52->Z digitValue: 1, ascii: 65, value: 52, remainder: 0 digitValue: 2, ascii: 66, value: 51, remainder: 51 53->BA digitValue: 25, ascii: 89, value: 76, remainder: 24 digitValue: 2, ascii: 66, value: 51, remainder: 51 77->BY digitValue: 26, ascii: 90, value: 77, remainder: 25 digitValue: 2, ascii: 66, value: 51, remainder: 51 78->BZ digitValue: 1, ascii: 65, value: 78, remainder: 0 digitValue: 3, ascii: 67, value: 77, remainder: 77 79->CA

preferences:
299.76 ms | 409 KiB | 459 Q