Функция пользовательского кодирования PHP не дает требуемого результата

Я пытаюсь написать функцию в 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
11 окт. '17 в 11:02
источник поделиться
1 ответ

Вычисление нового смещения внутри блока if неверно, вы должны вычесть длину строки, а не смещение. Но лучше использовать оператор modulo:

function encode($char,$offset) {
    $char_list = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $_offset = strpos($char_list,$char) + $offset;
    $_offset = $_offset % strlen($char_list);
    return $char_list[$_offset];
}
+1
11 окт. '17 в 11:10
источник

Посмотрите другие вопросы по меткам или Задайте вопрос