PHP技术问题:从数组随机取单词后无法统计辅音数量
随机字符串辅音字母统计问题修复
问题场景
需要从给定数组随机选取一个字符串,统计其中的辅音字母数量,但现有代码无法完成正确统计,原代码如下:
$woerter = [ "Maus", "Automobil", "Schifffahrt", "Hund", "Katze", "Ziege", "Stanniolpapier", "Elefant", "Isopropylalkohol", "Schwimmbad" ]; $random = array_rand($woerter); $konsonanten = ["b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","u","v","w","x","y","z", "B","C","D","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"]; $zaehler = 0; if (in_array($woerter[$random], $konsonanten)) { $zaehler++; } echo "Das Wort \"$woerter[$random]\" enthält $zaehler Zeichen, die keine Vokale sind.";
错误原因
- 逻辑错误:直接将整个随机单词与辅音数组对比,而非逐个字符检查,仅会判断单词是否为单个辅音字母,完全不符合统计需求。
- 辅音定义错误:数组中错误包含了元音字母
u和U,这两个不属于辅音范畴。
修正后的代码
$woerter = [ "Maus", "Automobil", "Schifffahrt", "Hund", "Katze", "Ziege", "Stanniolpapier", "Elefant", "Isopropylalkohol", "Schwimmbad" ]; // 随机选取单词 $selectedWord = $woerter[array_rand($woerter)]; // 定义正确的辅音集合(排除元音a/e/i/o/u及大小写) $konsonanten = [ 'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z', 'B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z' ]; $zaehler = 0; // 遍历单词的每个字符 for ($i = 0; $i < strlen($selectedWord); $i++) { $char = $selectedWord[$i]; // 判断当前字符是否为辅音 if (in_array($char, $konsonanten)) { $zaehler++; } } echo "Das Wort \"$selectedWord\" enthält $zaehler Zeichen, die keine Vokale sind.";
代码说明
- 使用
array_rand()获取随机键后,直接取出对应单词赋值给$selectedWord,增强可读性。 - 修正辅音数组,移除错误包含的
u/U。 - 通过循环遍历单词的每个字符,逐个判断是否属于辅音集合,正确统计数量。
内容的提问来源于stack exchange,提问作者blacks07
相关产品推荐
相关产品推荐

