如何优化这个PHP代码?

时间:2013-05-29 05:37:02

标签: php optimization

我写了一个函数,它将一个单词转换成一个带数字的数组。 F.e。

$alphas = range('a', 'z');
function dig_to_string($string) {
     global $alphas;
     $array = str_split($string);
     foreach($array as $a) {
         $digits[] = array_search($a,$alphas);
     }
     return $digits;
}
$word = 'color';
$array = dig_to_string($word);
// Array ( [0] => 2 [1] => 14 [2] => 11 [3] => 14 [4] => 17 )
// Because 'c' is the second alphabet's letter, 'o' is 14th and so on.
// Means 'a' has 0-index

有优化方法吗?

4 个答案:

答案 0 :(得分:3)

为什么不使用map并使用与'a'的区别来获取每个角色的代码

function code($n){return ord($n)-ord('a')+1;}
$b = array_map("code", str_split("hello"));

答案 1 :(得分:2)

您只需使用ord()

即可
function string_to_digits($string) {
    $start=ord('a');
    $length=strlen($string);
    for($i=0;$i<$length;$i++)
    {
        $digits[]=ord($string[$i])-$start;  
              // $digits[]=ord($string[$i]);   //If you want ASCII code to be returned

    }
    return $digits;
}

答案 2 :(得分:1)

也许这会好一些。我没有测试它,但我认为它应该工作; - )

function dig_to_string($string)
{
    $len = strlen($string);
    $digits = array();
    for($i=0;$i<$len;$i++){
        $digits[$i] = ord($string[$i])-97; //97 = ASCII for 'a'
    }
    return $digits;
}

答案 3 :(得分:0)

function str_to_dig($string) {
    static $map = null;
    if ($map === null) {
        $map = array_flip(range('a', 'z'));
    }

    return array_map(function ($char) use ($map) { return $map[$char]; }, str_split($string));
}
  • 仅使用初始化char数组一次,而不使用global
  • 制作可以直接访问的地图,而不是多次搜索数组
  • array_map,因为 weeeee! ^ _ ^