<?php
class Bijective
{
public $dictionary = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
public function __construct()
{
$this->dictionary = str_split($this->dictionary);
var_dump($this->dictionary);
}
public function encode($i)
{
if ($i == 0)
return $this->dictionary[0];
$result = '';
$base = count($this->dictionary);
while ($i > 0)
{
$result[] = $this->dictionary[($i % $base)];
$i = floor($i / $base);
}
var_dump($result);
$result = array_reverse($result);
var_dump($result);
return join("", $result);
}
public function decode($input)
{
$i = 0;
$base = count($this->dictionary);
$input = str_split($input);
foreach($input as $char)
{
$pos = array_search($char, $this->dictionary);
$i = $i * $base + $pos;
}
return $i;
}
}
$bj = new Bijective();
$hash = $bj->encode($bj->decode('Abc') + 1);
var_dump($hash);
- Output for 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- array(62) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
[4]=>
string(1) "e"
[5]=>
string(1) "f"
[6]=>
string(1) "g"
[7]=>
string(1) "h"
[8]=>
string(1) "i"
[9]=>
string(1) "j"
[10]=>
string(1) "k"
[11]=>
string(1) "l"
[12]=>
string(1) "m"
[13]=>
string(1) "n"
[14]=>
string(1) "o"
[15]=>
string(1) "p"
[16]=>
string(1) "q"
[17]=>
string(1) "r"
[18]=>
string(1) "s"
[19]=>
string(1) "t"
[20]=>
string(1) "u"
[21]=>
string(1) "v"
[22]=>
string(1) "w"
[23]=>
string(1) "x"
[24]=>
string(1) "y"
[25]=>
string(1) "z"
[26]=>
string(1) "A"
[27]=>
string(1) "B"
[28]=>
string(1) "C"
[29]=>
string(1) "D"
[30]=>
string(1) "E"
[31]=>
string(1) "F"
[32]=>
string(1) "G"
[33]=>
string(1) "H"
[34]=>
string(1) "I"
[35]=>
string(1) "J"
[36]=>
string(1) "K"
[37]=>
string(1) "L"
[38]=>
string(1) "M"
[39]=>
string(1) "N"
[40]=>
string(1) "O"
[41]=>
string(1) "P"
[42]=>
string(1) "Q"
[43]=>
string(1) "R"
[44]=>
string(1) "S"
[45]=>
string(1) "T"
[46]=>
string(1) "U"
[47]=>
string(1) "V"
[48]=>
string(1) "W"
[49]=>
string(1) "X"
[50]=>
string(1) "Y"
[51]=>
string(1) "Z"
[52]=>
string(1) "0"
[53]=>
string(1) "1"
[54]=>
string(1) "2"
[55]=>
string(1) "3"
[56]=>
string(1) "4"
[57]=>
string(1) "5"
[58]=>
string(1) "6"
[59]=>
string(1) "7"
[60]=>
string(1) "8"
[61]=>
string(1) "9"
}
Fatal error: Uncaught Error: [] operator not supported for strings in /in/5ETbX:23
Stack trace:
#0 /in/5ETbX(51): Bijective->encode(100009)
#1 {main}
thrown in /in/5ETbX on line 23
Process exited with code 255. - Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20
- array(62) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
[4]=>
string(1) "e"
[5]=>
string(1) "f"
[6]=>
string(1) "g"
[7]=>
string(1) "h"
[8]=>
string(1) "i"
[9]=>
string(1) "j"
[10]=>
string(1) "k"
[11]=>
string(1) "l"
[12]=>
string(1) "m"
[13]=>
string(1) "n"
[14]=>
string(1) "o"
[15]=>
string(1) "p"
[16]=>
string(1) "q"
[17]=>
string(1) "r"
[18]=>
string(1) "s"
[19]=>
string(1) "t"
[20]=>
string(1) "u"
[21]=>
string(1) "v"
[22]=>
string(1) "w"
[23]=>
string(1) "x"
[24]=>
string(1) "y"
[25]=>
string(1) "z"
[26]=>
string(1) "A"
[27]=>
string(1) "B"
[28]=>
string(1) "C"
[29]=>
string(1) "D"
[30]=>
string(1) "E"
[31]=>
string(1) "F"
[32]=>
string(1) "G"
[33]=>
string(1) "H"
[34]=>
string(1) "I"
[35]=>
string(1) "J"
[36]=>
string(1) "K"
[37]=>
string(1) "L"
[38]=>
string(1) "M"
[39]=>
string(1) "N"
[40]=>
string(1) "O"
[41]=>
string(1) "P"
[42]=>
string(1) "Q"
[43]=>
string(1) "R"
[44]=>
string(1) "S"
[45]=>
string(1) "T"
[46]=>
string(1) "U"
[47]=>
string(1) "V"
[48]=>
string(1) "W"
[49]=>
string(1) "X"
[50]=>
string(1) "Y"
[51]=>
string(1) "Z"
[52]=>
string(1) "0"
[53]=>
string(1) "1"
[54]=>
string(1) "2"
[55]=>
string(1) "3"
[56]=>
string(1) "4"
[57]=>
string(1) "5"
[58]=>
string(1) "6"
[59]=>
string(1) "7"
[60]=>
string(1) "8"
[61]=>
string(1) "9"
}
array(3) {
[0]=>
string(1) "d"
[1]=>
string(1) "b"
[2]=>
string(1) "A"
}
array(3) {
[0]=>
string(1) "A"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
string(3) "Abd"
preferences:
173.48 ms | 406 KiB | 183 Q