首页 > 解决方案 > PHP如何使用公式数学模数将数组更改为字符串?

问题描述

我用公式计算了模数学:3 * n mod 26

通过加密数组[n]AZ到数字的转换,从预定数组的结果中得到数字的结果,然后将计算结果转换回字符串。

示例:我的名字是 CARL > KU NAKM YC GAZH

K = 10, U = 20, N = 13, A = 0, K = 10, M = 12

Y = 24, C = 2, G = 6, A = 0, Z = 25, H = 7

我设法将数字转换为字符串并得到结果:KUANAKMAYCAGAZH

我想问的是如何通过替换空格来删除'A',所以结果是:'KU NAKM YC GAZH'而不是'KUANAKMAYCAGAZH'

对不起,我的英语不好。

下面是我的脚本:

<?php
$text = 'MY NAME IS CARL';
$str = '';

$key = array(
"A" => 0, "B" => 1,"C" => 2, "D" => 3,"E" => 4,"F" => 5,
"G" => 6, "H" => 7, "I" => 8, "J" => 9, "K" => 10,
"L" => 11, "M" => 12, "N" => 13, "O" => 14,
"P" => 15, "Q" => 16, "R" => 17, "S" => 18,"T" => 19,
"U" => 20, "V" => 21, "W" => 22, "X" => 23,
"Y" => 24, "Z" => 25
);
for ($i = 0; $i < strlen($text); $i++) {
    $number = (3*$key[strtoupper($text[$i])])%26; // math caesar cipher 3 * n modulo 26
    $str .= array_search($number, $key);
}
echo $str;
?>

标签: php

解决方案


您可以使用该函数查找与数组array_search中的数字对应的字母。$key例如,array_search(21, $key)将返回“V”。

<?php
$text = 'HELLO';
$str = '';

$key = array(
"A" => 0, "B" => 1,"C" => 2, "D" => 3,"E" => 4,"F" => 5,
"G" => 6, "H" => 7, "I" => 8, "J" => 9, "K" => 10,
"L" => 11, "M" => 12, "N" => 13, "O" => 14,
"P" => 15, "Q" => 16, "R" => 17, "S" => 18,"T" => 19,
"U" => 20, "V" => 21, "W" => 22, "X" => 23,
"Y" => 24, "Z" => 25
);
for ($i = 0; $i < strlen($text); $i++) {
    $number = (3*$key[strtoupper($text[$i])])%26;
    $str .= array_search($number, $key);
}
echo $str;

推荐阅读