массивы — Установка пользовательской базы в переполнении стека

Я пытаюсь создать пользовательскую базу, состоящую из 31 символа:

$custom_array = array("0","1","2","3","4","5","6","7","8","9",
"b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z");

Я исключил гласные из алфавита и добавил цифры в начале.

Ну, в основном мне нужна функция, которая похожа на base_convert (), так что я могу конвертировать в base10 и наоборот.

Спасибо за любую помощь.

Редактировать:
Я придумал эту функцию, но принятый ответ также является хорошим подходом. Благодарю.

$basearray = array("0","1","2","3","4","5","6","7","8","9","b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z");

function baseXto10($code,$basearray)
{
$codearr = array_reverse(str_split($code));
$charnum = count($basearray);
$sum = 0;
$i = 0;
foreach($codearr as $key => $value)
{
$charpos = array_search($basearray, $value);
$sum+= $charpos * pow($charnum,$i);
$i++;
}
return $sum;
}

1

Решение

Вы, вероятно, хотите использовать base_convert () для преобразования между реальными базами. Затем из base10 (или любого другого) сопоставьте значения между начальной и вашей новой базой.

Возможно как то так

function my_base_convert($input, $fromBase)
{
$baseMapping = [
'0' => 0,
'a' => 'b',
//etc
];

$result = base_convert($input, $fromBase, 10);

return str_replace(array_keys($baseMapping), array_values($baseMapping), $input);
}

Тогда просто str_replace

0

Другие решения

Других решений пока нет …