PHP摩尔斯电码转换器

标签 php arrays loops converter morse-code

我正在用 PHP 编写一个基本的摩尔斯电码转换器,它可以接受一个字符串并将其转换为摩尔斯电码。它使用关联数组、foreach 循环和 for 循环。它有效,除了出于某种原因,它在每个转换后的字符后输出等效于“0”的摩尔斯电码。我无法弄清楚 0 是从哪里来的。如果我从关联数组中删除 0,没有问题,但我也希望能够转换数字。如果有人能够给我一些反馈,我将不胜感激。

代码如下:

<?php
$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<strlen($string_lower);$i++){
        foreach($assoc_array as $letter => $code){
            if($letter == $string_lower[$i]){
                echo "$code<br/>";
            }
        }
    }
?>

最佳答案

主要问题是您做的“多于”必要的事情。当您可以使用字符串从中获取所需数据时,无需像那样循环遍历您的 $assoc_array

这也使用了更少的资源,因为不是从 a-z0-9 循环,您只循环所需的确切数量的字母/数字/空格。

/*Rest of your code above*/
for($i=0;$i<strlen($string_lower);$i++){
    echo (isset($assoc_array[$string_lower[$i]])) ? $assoc_array[$string_lower[$i]] . '<br />' : 'ERROR';       
} 

由于您的数组包含从 a-z0-9 的所有内容,您可以轻松地调用所需的字母,而不必担心丢失数据。

编辑: 添加了一个 isset() 检查,它几乎不需要因为 $assoc_array 涵盖了每个需要的字母/数字,但安全总比抱歉好。 (感谢@Farkie 提醒我)

关于PHP摩尔斯电码转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150018/

相关文章:

php - 如何在 PHP 中更改 HTML 标记的值

php - 如何从 php 中的 FORM 操作获取响应

c++ - 数组的特定元素

Javascript:使用 slice() 创建数组的副本;

php - javascript在php循环中引用输入ID并将值传回相同的输入ID

php - 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册

php - 从需要登录的网站上抓取?

php - 数组的非古老转储?

java - 我如何让我的程序循环?

php - 在数组中查找连续值并创建按其计数分组的数组