如何仅使用looping与explode方法输出字符串重复次数统计
问题解决:PHP统计单词出现次数(仅用loop与explode)
需求(翻译后)
输入句子示例:"I think I got a long way to go to market."
需输出以下格式:
I 2 think 1 got 1 a 1 long 1 way 1 to 2 go 1 market 1
要求仅使用循环(looping)与explode方法实现,完善给定的PHP代码片段。
原始代码片段
<?php $tmp = explode (" ", $text); echo " My Words Repetition "; foreach ($tmp as $a) { echo "" $a."" ; echo "" ; } echo "" ?>
完善后的代码
<?php // 输入目标文本 $text = "I think I got a long way to go to market."; // 按空格分割为单词数组 $tmp = explode(" ", $text); // 记录已处理过的单词,避免重复输出 $processed = []; // 外层循环遍历每个单词 foreach ($tmp as $word) { // 清理单词首尾的标点,避免把带标点的单词当成新单词 $cleanWord = trim($word, ".,!?;:"); // 若该单词已处理过,直接跳过 if (in_array($cleanWord, $processed)) { continue; } // 内层循环统计当前单词的出现次数 $count = 0; foreach ($tmp as $checkWord) { $cleanCheck = trim($checkWord, ".,!?;:"); if ($cleanCheck === $cleanWord) { $count++; } } // 输出单词和对应次数 echo $cleanWord . " " . $count . "\n"; // 将当前单词标记为已处理 $processed[] = $cleanWord; } ?>
代码说明
- 标点清理:用
trim()去除单词首尾的常见标点,确保market.和market被识别为同一个单词。 - 去重处理:通过
$processed数组记录已输出的单词,避免重复打印同一单词的统计结果。 - 嵌套循环统计:外层循环遍历每个单词,内层循环重新遍历整个数组统计当前单词的出现次数,完全符合仅使用loop和explode的要求。
内容的提问来源于stack exchange,提问作者Ingyin Phyu
相关产品推荐
相关产品推荐

