在PHP中设置自定义基

在PHP中设置自定义基,php,arrays,base,Php,Arrays,Base,我正在尝试建立一个由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,反之亦然 谢谢

我正在尝试建立一个由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;
}

您可能希望使用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);
}

然后简单的stru_replace

将您的预期输出也放在这里。更容易得到解决方案?我想你的方法可以解决我的问题,谢谢!