php - 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;
?>
解决方案
您可以使用该函数查找与数组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;
推荐阅读
- ruby - Ruby 动态方法调用的问题
- reactjs - 当我尝试将道具传递给孩子时映射不是函数错误
- dbeaver - 有没有办法找到引用 DBeaver 中另一个表/列的所有表?
- sql-server - SQL SERVER:子查询中的 WHERE 子句从外部查询中获取属性
- firebase - Firebase 身份验证和谷歌云翻译
- r - R 函数仅显示列的 20% 最高值
- laravel - 如何使用两个输入文本进行搜索,一个用于搜索,另一个用于排除
- sql - MS Access 查询输入必须包含至少一个表或查询
- c - 内部带有指针的结构是一个数组(C)
- delphi - 如何在 OnHint 事件处理程序中检测提示发送者控制?