【问题标题】:Count number of times a word appears in php array计算一个单词在php数组中出现的次数
【发布时间】:2014-04-25 01:41:16
【问题描述】:

我需要计算用户输入的单词在数组中出现的次数。用户在表单文本框中输入文本,然后该文本进入 php 中的 String 变量,然后将其分解为每个空格都有索引的数组。

我需要计算每个单词出现的次数。假设文本是“yo yo yo man man man”,那么我需要计算“yo”这个词出现的次数以及“man”出现的次数。请记住,此文本可以是用户输入的任何内容,因此不能使用诸如“str_word_count”之类的方法,因为它只需要硬编码文本。

到目前为止我设置的代码:

form.php:

<html>

    <head>

        <title>Part 1</title>

    </head>

    <body>

        <h1></h1>

        <form action="part1result.php" method = "post">

            <input type="text" name="text"/>
            <input type="submit" value="Submit" />

        </form>

    </body>

</html>

结果.php:

<head>

    <title></title>

</head>

<body>

    The text you entered was:

    <?php

        $text = $_POST['text']; // get text
        $textToCount = explode(' ', $text);
        echo $text.'<br><br>';

        for($i=0; $i<count($textToCount); $i++)
        {   

        }



    ?>

</body>

【问题讨论】:

    标签: php arrays string


    【解决方案1】:

    使用array_count_values():

    $textToCount = explode(' ', 'yo yo yo man man man');
    print_r(array_count_values($textToCount));
    //Array ( [yo] => 3 [man] => 3 )
    

    foreach loop:

    $textToCount = explode(' ', 'yo yo yo man man man');
    $words = array_count_values($textToCount);
    foreach ($words as $word => $count) {
         printf('%s appears %u times', $word, $count);
    }
    

    请记住,标点符号可能会引发此问题,因此如果允许使用标点符号,请务必在使用您的代码之前将其删除。

    始终以PHP has a ton of built in functions for arrays 的形式查看手册。 Demo

    【讨论】:

    • 我也见过这个。这种方法的问题是它允许我打印出该单词出现的次数,当然,但不是我想要的格式。我应该将其包含在原始帖子中。我正在寻找的格式是:你出现 3 次 man 出现 3 次等等......
    • 你确实意识到你可以让它以你想要的任何格式出现。这只是一个数组。
    • 对,但是对于我正在尝试的格式,我得到了重复。它打印“哟出现3次”,3次。
    • 那么你需要修复你的循环。循环通过这个应该是微不足道的。
    • 那么可能有一些我不理解或遗漏的关于关联数组的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多