计数器变量不工作


Counter variable not working?

我正在编写一个函数来计算单词的音节,如下所示:

function estimate_syllables($word) {
    $total_count=0; 
    foreach($word as $w) {
        $syllable_count = count_english_vowels($w);
        $total_count += $syllable_count; 
    }
    return $total_count;
}
function count_english_vowels($word) {
    static $english_vowels = array('A', 'E', 'I', 'O', 'U', 'Y');
    $vowel_count = 0;
    $letters = preg_replace('/[^a-z0-9]+/i', "", $word);
    $len = strlen($letters); 
    $letters = str_split(strtoupper($letters)); 
    $currPosition = -2; 
    $prevPosition = -1;
    for($i = 0; $i < $len; $i++) {
        if (in_array($letters[$i], $english_vowels)) {
            if($i != $currPosition + 1) {
                if ($letters[$i] == 'E' && $i != ($len -1))
                    $vowel_count++;
                $prevPosition = $currPosition; 
                $currPosition = $i;
            } 
        }
    }
    return $vowel_count;
}

我真的很困惑:如果你把count_english_vowels传给一个像水一样的单词,它会两次到达正确音节的内环,但计数器只报告1?超级困惑,有人能弄清楚出了什么问题吗?

因为这个原因,它只报告了一个:

if ($letters[$i] == 'E' && $i != ($len -1))
    $vowel_count++;
    $prevPosition = $currPosition; 
    $currPosition = $i;

water中只有一个E,因此它只执行$vowel_count++;一次。根据您对该代码的缩进,我假设您需要在这些行周围使用{}括号,因为如果没有它们,PHP将只应用if后面的第一行,所以如果该代码正确,您的缩进应该如下所示:

if ($letters[$i] == 'E' && $i != ($len -1))
    $vowel_count++;
$prevPosition = $currPosition; 
$currPosition = $i;