php解摩斯电码,PHP摩尔斯电码转换器

我正在用PHP编写一个基本的莫尔斯代码转换器,它可以接受一个字符串并将其转换为莫尔斯代码.它使用了一个关联数组,一个foreach循环和一个for循环.它有效,除了某些原因它在每个转换后的字符后输出等效于’0’的莫尔斯码.我无法弄清楚0的来源.如果我从关联数组中删除0,没有问题,但我希望能够转换数字.如果有人能够给我一些反馈,那将非常感激.

这是代码:

$string = "dog";

$string_lower = strtolower($string);

$assoc_array = array(

"a"=>".-",

"b"=>"-...",

"c"=>"-.-.",

"d"=>"-..",

"e"=>".",

"f"=>"..-.",

"g"=>"--.",

"h"=>"....",

"i"=>"..",

"j"=>".---",

"k"=>"-.-",

"l"=>".-..",

"m"=>"--",

"n"=>"-.",

"o"=>"---",

"p"=>".--.",

"q"=>"--.-",

"r"=>".-.",

"s"=>"...",

"t"=>"-",

"u"=>"..-",

"v"=>"...-",

"w"=>".--",

"x"=>"-..-",

"y"=>"-.--",

"z"=>"--..",

"0"=>"-----",

"1"=>".----",

"2"=>"..---",

"3"=>"...--",

"4"=>"....-",

"5"=>".....",

"6"=>"-....",

"7"=>"--...",

"8"=>"---..",

"9"=>"----.",

"."=>".-.-.-",

","=>"--..--",

"?"=>"..--..",

"/"=>"-..-.",

" "=>" ");

for($i=0;$i

foreach($assoc_array as $letter => $code){

if($letter == $string_lower[$i]){

echo "$code
";

}

}

}

?>

解决方法:

主要问题是你所做的“更多”.当你可以使用字符串从中获取所需的数据时,无需循环遍历你的$assoc_array.

这也使用更少的资源,因为您只需循环所需的字母/数字/空格的精确数量,而不是从a-z和0-9循环.

/*Rest of your code above*/

for($i=0;$i

echo (isset($assoc_array[$string_lower[$i]])) ? $assoc_array[$string_lower[$i]] . '
' : 'ERROR';

}

由于您的数组包含a-z和0-9中的所有内容,因此您可以轻松地调用所需的字母而无需担心丢失数据.

编辑:

添加了一个isset()检查,几乎不需要它,因为$assoc_array涵盖了所有需要的字母/数字,但比抱歉更安全. (感谢@Farkie提醒我)

标签:php,arrays,loops,converter,morse-code

来源: https://codeday.me/bug/20190611/1220130.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尔斯电码(Morse Code)是一种早期的通信方式,通过长短音符组合来代表字母、数字和标点符号。在Python中实现一个尔斯电码转换器,你可以创建两个函数:一个用于将文本转换为尔斯电码,另一个用于将尔斯电码转换回文本。这里是一个简单的示例: 1. **编码函数**: 它会接受一个字符串参数,查找每个字符对应的尔斯电码,并连接起来形成最终的尔斯电码字符串。 ```python def encode_morse(text): morse_code_dict = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.' } return ' '.join([morse_code_dict[ch] for ch in text.upper()]) ``` 2. **码函数**: 它会接受一个尔斯电码字符串,将其分割成单独的字符,然后找到每个字符对应的字母并组合起来。 ```python def decode_morse(morse_code): morse_code_dict = {value: key for key, value in morse_code_dict.items()} decoded_text = '' words = morse_code.split(' ') for word in words: decoded_text += morse_code_dict[word] if word in morse_code_dict else ' ' return decoded_text ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值