Установка пользовательской базы в PHP

1

Я пытаюсь создать пользовательскую базу, состоящую из 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;
}
  • 0
    положите ожидаемый результат здесь также. проще найти решение?
Теги:
arrays
base

1 ответ

0
Лучший ответ

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

Возможно, что-то вроде этого

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
    я думаю, что ваш подход может решить мою проблему, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню