2011-05-02 3 views
0

일부 arry를 만들고 싶습니다. 무엇보다 먼저 내가 왜이 일을하는지 이해하도록 다음과 같이 설명하고 싶습니다.알파벳의 PHP 동적 생성

암호 작성.

알파벳으로 배열을 만들고 싶습니다.

$a1 = array("a"=>"b", "b"=>"c",....,"z"=>a"); 

좋아로서, 그 지금은 좀 더 자주하고 싶지 그래서 입력의 조금이다. 이 경우 x + 1 = y 또는 다른 말로하면 디코딩 x = y-1

따라서 1에서 26까지의 위치 변경으로이를 수행하고 싶습니다. .

암호화 및 암호 해독 자체는 PHP에서 그다지 문제가 아니며 단순한 문자열 교체이므로 요청한 것이 아닙니다. 그러나이 가능한 같은 것을 말하고하여 동적 인 방법으로 만들 수 있는지 궁금 해서요 :

createAlphabets (1,12)

을 그리고 그것은 나에게 12 알파벳 키를 사용하여 다차원 배열을 만듭니다?

이 내 질문의 두 번째 부분입니다 :

수학적 계산에 의해 문자를 교환하기 위해 더 많은 가능성의 모습이?

x + 5-3 = y는 x + 2 = y와 동일하므로 내 26 개 배열로 계산됩니다. 그래서 내가 말할지라도 : x-5 + 3 = y =? x-2 = y x + 24 = y와 동일합니까? 그렇지 않아? 제발 +25 또는 +23 일 수 있다고 말하는 것을 괴롭히지 마십시오. 그리고 나는 24 개의 배열을 가지지 않을 것입니다 - 그것의 8am과 나는 잠을 자지 못했습니다 - 나는 단지 원리에 대해 묻고 있습니다 - 당신이 내 일을하기를 원하지 않습니다. 그냥 몇 가지 확인 및 아이디어를 찾고.

+1

[Vigenère cipher] (http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher)를 절반 구현 한 것처럼 들리는군요. – Charles

답변

1
$chars = range('a', 'z'); 
$shift = 5; 
$shifted = array_merge(array_slice($chars, $shift), array_slice($chars, 0, $shift)); 
$alphabet = array_combine($chars, $shifted); 

알파벳에 26자를 사용할 수 있으므로 26 자까지만 이동할 수 있습니다. 즉 26 가지 조합이 가능합니다.