После долгого изучения вашего алгоритма я наконец-то получил то, что вы хотели ^^
Во-первых, в PHP есть много встроенных методов, которые вам очень помогут.Если я не ошибаюсь, следующая часть вашего кода предназначена только для преобразования $src
в целое число.
while($l = strlen($wet))
{
$digit = $wet[$l - 1];
$val += $mlt * strpos($srcAlphabet, $digit);
$wet = substr($wet, 0, $l - 1);
$mlt *= $srcBase;
}
Мало того, что вы странным образом «приводите» его к строке перед вызовомфункция, вы также "приведете" его к целому числу, даже более странному.Вы должны взглянуть на php intval метод.И причина того, что он всегда начинается с w, заключается в том, что второй цикл продолжается только если
$digitVal = $wet % $dstBase >= $dstBase
, что означает, что на следующем шаге он все равно будет $digitVal > 1
, поэтому индекс равен минимум 1, чтосоответствует w
.На самом деле, это имеет смысл, даже если я не знаю, чего именно вы хотите достичь (измените базу своего числа на 26?), Потому что 0 также существует, но нет такого числа, как 009 или что-то подобное,Затем вы просто пишете 9, и это то же самое в вашей системе (вы пишете только p вместо qqp).
Однако вы должны действительно изучить некоторые приемы в PHP, чтобы сделать вашу жизнь проще.Взгляните на этот учебник.