PHP摩尔斯电码转换器
发布时间:2020-12-13 17:49:59 所属栏目:PHP教程 来源:网络整理
导读:我正在用 PHP编写一个基本的莫尔斯代码转换器,它可以接受一个字符串并将其转换为莫尔斯代码.它使用了一个关联数组,一个foreach循环和一个for循环.它有效,除了某些原因它在每个转换后的字符后输出等效于’0’的莫尔斯码.我无法弄清楚0的来源.如果我从关联数组
我正在用
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和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和0-9中的所有内容,因此您可以轻松地调用所需的字母而无需担心丢失数据. 编辑:添加了一个isset()检查,几乎不需要它,因为$assoc_array涵盖了所有需要的字母/数字,但比抱歉更安全. (感谢@Farkie提醒我) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |