我写了一个函数,它将一个单词转换成一个带数字的数组。 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
有优化方法吗?
答案 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));
}
global
array_map
,因为 weeeee! ^ _ ^