You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.";

错误原因

  1. 逻辑错误:直接将整个随机单词与辅音数组对比,而非逐个字符检查,仅会判断单词是否为单个辅音字母,完全不符合统计需求。
  2. 辅音定义错误:数组中错误包含了元音字母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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:20:27