PHP自定义编码功能未提供所需的结果

时间:2017-10-11 11:02:28

标签: php algorithm character-encoding

我试图在PHP中编写一个函数,它根据给定的偏移量将字符串转换为编码字符串。

例如: 如果偏移为2且输入为c,则输出为e 同样,如果偏移为5且输入为X,则输出为c

function encode($char,$offset)
{
 $char_list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
 $_offset = strpos($char_list,$char) + $offset;

 if($offset > strlen($char_list )){
  $_offset = _$offset  - $offset;
 }
 return $char_list[$_offset];
}

所需结果:

encode("a",0) // must returns a
encode("c",5) // must returns h
encode("X",9) // must returns g

1 个答案:

答案 0 :(得分:1)

if块内新偏移量的计算不正确,您应该减去字符串的长度,而不是偏移量。但最好使用modulo operator

function encode($char,$offset) {
    $char_list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $_offset = strpos($char_list,$char) + $offset;
    $_offset = $_offset % strlen($char_list);
    return $char_list[$_offset];
}