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

如何仅使用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;
}
?>

代码说明

  1. 标点清理:用trim()去除单词首尾的常见标点,确保market.和market被识别为同一个单词。
  2. 去重处理:通过$processed数组记录已输出的单词,避免重复打印同一单词的统计结果。
  3. 嵌套循环统计:外层循环遍历每个单词,内层循环重新遍历整个数组统计当前单词的出现次数,完全符合仅使用loop和explode的要求。

内容的提问来源于stack exchange,提问作者Ingyin Phyu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:35:26