PHP摩尔斯电码转换器

2023-12-11

我正在用 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-z and 0-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-z and 0-9您可以轻松地调用所需的字母,而不必担心丢失数据。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP摩尔斯电码转换器 的相关文章

随机推荐

  • Breeze 扩展实体属性仅在第二次查询时加载

    希望有人对 Breeze 的扩展实体有更好的了解 因为我被难住了 因此 我在服务器端 使用 Breeze 的 API 的 Web API 创建了一个分部类 WO Rout 并创建了一个名为 AssetJobEqNo 的属性 我已阅读并遵循
  • 'instCount' Pin 工具计数什么指令?

    我在主函数内使用空主体的基本 C 程序上运行 pintool instCount int main 当我在这个可执行程序上运行 instCount 时 它显示大约 86000 条指令 即使程序很小 为什么会生成这么多指令 有什么想法吗 谢谢
  • 如何在 python numpy 中并行化求和计算?

    我正在尝试计算总和 但在并行化代码时遇到困难 我尝试并行化的计算有点复杂 它同时使用 numpy 数组和 scipy 稀疏矩阵 它输出一个 numpy 数组 我想对大约 1000 次计算的输出数组求和 理想情况下 我会保留所有迭代的运行总和
  • 为什么我有时通过列表模型更新内容后会得到空白的 JList?

    我有一个反复出现的问题 我有一个 JList 我希望用新内容更新它 我正在使用 DefaultListModel 它提供了向列表添加新内容的方法 但在使用这些方法时 我发现某些调用会导致完全空白的 JList 更新是否有效似乎是随机的 与发
  • 用户的 Microsoft Graph Api $count 响应不一致

    我试图通过我的 B2C AAD 租户通过 Microsoft Graph API 获取用户总数 但响应似乎要么出错 要么忽略 odata count财产 网上的反馈也是褒贬不一 有人说 count即使官方文档说仍然不受支持 count支持
  • 无法连接到 GitHub.com 进行克隆

    我正在尝试克隆Angular phonecat git 存储库 但是当我在 Git Bash 中输入命令时收到以下消息 git clone git github com angular angular phonecat git Clonin
  • 如何将 WSO2 API Manager (AM) 1.10.0 与 PingFederate SAML 2.0 集成?

    如何将 WSO2 am 1 10 0 与 PingFederate SAML 2 0 集成 有什么指示吗 在 WSO2 网站上 我只看到了有关如何在 WSO2 产品中设置 SSO 的文档 https docs wso2 com displa
  • EditText 的 onFocusChange 中的 setSelection

    通常 当单击视图时 文本光标会设置在您单击的位置附近 我尝试将其始终设置为末尾 超过最后一个字符 但除非操作被延迟 否则它不会执行任何操作 下列 new OnFocusChangeListener Override public void
  • Electron-builder 没有捆绑 python 文件

    这是我的目录结构renderer js包含在index html python 脚本visitor py and download py被称为来自renderer js via 蟒蛇壳 一旦我捆绑 它就无法找到Python脚本 index
  • sql server 授予、撤销用户权限

    我编写了一个简单的 C 代码 用于连接到 sql server 数据库并执行查询 cmd new SqlCommand txtQuery Text ToString Trim con cmd ExecuteNonQuery 在我的数据库中
  • GitHub 如何更改 URL 但不重新加载? [复制]

    这个问题在这里已经有答案了 嘿 我注意到 当浏览 GitHub 存储库时 它使用 AJAX 来加载每个文件夹 文件 我明白这一切 我只是想知道他们是如何更改 URL 的 你能用 JavaScript 获取和设置 URL 吗 如果是这样 它对
  • 动画高度从下到上而不是从上到下

    如何实现反向高度动画 我怎样才能让它从元素的底部开始动画并向上移动到元素的顶部 而不是从顶部开始并向下移动的典型动画 该事件由以下条件触发a link 1 动画发生在div line 1 这是我的代码 它似乎不起作用 HTML div di
  • 使用两个域相同的数据库和不同的 WordPress 主题

    我想使用相同的数据库 内容 用户 评论 元 类别等 在我的子目录中安装另一个wordpress 我实际上想创建我的网站的移动版本 但我不想使用任何移动检测脚本或 css3 媒体查询 只是想创建我的新主题 适用于移动版本 例如 主域还有子域
  • 将数组作为数组而不是 PHP 中的 JSON 传递给 javascript

    首先 这不是重复的问题 我已经研究过一些类似的问题 大部分答案就是我现在正在使用的 这是问题设置 在 PHP 端 array array name gt a data gt array 0 gt 15 0 25 gt 18 0 35 gt
  • R 中选定列的行平均值

    让我们用著名的例子来说明这个问题iris数据集 我需要按行应用选定的函数 但仅在选定的列上应用 示例如下 library tidyverse iris gt mutate at funs scale vars vars c Species
  • 从 SQLite 数据库获取纬度和经度以在 Android MapOverlay 中使用

    如果我将一堆位置的纬度和经度存储在 SQLite 数据库中 我将如何检索这些值并将它们分别放入 OverlayItem 类中以便在 Google 的地图代码中使用 数据库名称 database 表名 place 字段位于place Tabl
  • 显示对象引用的值

    在 C 中 显示对象指针的实际值相当简单 例如 void p new CSomething cout lt lt p 有没有办法在 NET 中做这样的事情 这样做的价值只能是教育性的 例如出于演示目的 例如向学生展示一个值 而不是仅仅比较参
  • 将overlay2存储驱动程序与overlay文件系统结合使用

    Goal 我在 Live CD 中运行 docker 并且我想缓存 docker 构建的结果 主要是为了当我重新启动到此 Live CD 时使用 我的想法是建立一个overlayfs in var lib docker 所以 我有以下内容
  • SWR 挂钩不反映数据库更改

    该组件用于计算部署在 AWS Lambda 上的 Next js 应用程序中页面级别的视图数 function ViewsCounter slug slug string const data useSWR api views slug f
  • PHP摩尔斯电码转换器

    我正在用 PHP 编写一个基本的莫尔斯电码转换器 它可以接受一个字符串并将其转换为莫尔斯电码 它使用关联数组 foreach 循环和for 循环 它可以工作 除了由于某种原因它在每个转换后的字符后输出与 0 等效的莫尔斯电码 我不知道0是从