Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字计数器:不';t似乎没有给出我需要的输出(PHP)_Php - Fatal编程技术网

字计数器:不';t似乎没有给出我需要的输出(PHP)

字计数器:不';t似乎没有给出我需要的输出(PHP),php,Php,下面是我想到的一行代码: function Count($text) { $WordCount = str_word_count($text); $TextToArray = explode(" ", $text); $TextToArray2 = explode(" ", $text); for($i=0; $i<$WordCount; $i++)

下面是我想到的一行代码:

function Count($text)
        {    
            $WordCount = str_word_count($text);         

            $TextToArray = explode(" ", $text);
            $TextToArray2 = explode(" ", $text);

            for($i=0; $i<$WordCount; $i++)
            {
                $count = substr_count($TextToArray2[$i], $text);
            }
            echo "Number of {$TextToArray2[$i]} is {$count}";                                                   
        }
函数计数($text)
{    
$WordCount=str\u word\u count($text);
$TextToArray=分解(“,$text”);
$TextToArray2=分解(“,$text”);

对于($i=0;$i我假设您需要一个具有单词频率的数组

首先,将字符串转换为小写,并删除文本中的所有标点符号。这样,您就不会得到“But”、“But”和“But”的条目,而只是“But”的三个或更多用法

其次,如马克·贝克所说,使用第二个参数为2的
str\u word\u count
来获得文本中的单词列表。这可能比我建议的preg\u split更有效

然后遍历数组并将单词的值增加1

foreach($words as $word)
  $output[$word] = isset($output[$word]) ? $output[$word] + 1 : 1;

我假设您需要一个具有单词频率的数组

首先,将字符串转换为小写,并删除文本中的所有标点符号。这样,您就不会得到“But”、“But”和“But”的条目,而只是“But”的三个或更多用法

其次,如马克·贝克所说,使用第二个参数为2的
str\u word\u count
来获得文本中的单词列表。这可能比我建议的preg\u split更有效

然后遍历数组并将单词的值增加1

foreach($words as $word)
  $output[$word] = isset($output[$word]) ? $output[$word] + 1 : 1;

如果我正确理解了你的问题,这也会解决你的问题

function Count($text) {
   $TextToArray = explode(" ", $text); // get all space separated words
   foreach($TextToArray as $needle) {
     $count = substr_count($text, $needle); // Get count of a word in the whole text
     echo "$needle has occured  $count times in the text";
   }
}

如果我正确理解了你的问题,这也会解决你的问题

function Count($text) {
   $TextToArray = explode(" ", $text); // get all space separated words
   foreach($TextToArray as $needle) {
     $count = substr_count($text, $needle); // Get count of a word in the whole text
     echo "$needle has occured  $count times in the text";
   }
}

你想知道每个单词在一个句子、段落或文本中出现了多少次?str_word_count($text)也可以用来计算单词频率…问题出在哪里?你想知道每个单词在一个句子、段落或文本中出现了多少次?str_word_count($text)也可以用来计算词频…问题出在哪里?虽然这样做有效,但每次遇到每个单词时,你都会计算每个单词的使用次数。@RobertK ya你是对的。我只是想让海报知道,他不需要做
stru word\u count
而是可以在分解数组上使用
foreach
)这显然不是一个最佳的解决方案:)我在看到你的解决方案后发布了这个答案。这就是为什么我提到这一点也可以解决他的问题:)虽然这样做有效,但每次遇到每个单词时,你都会数一数它的使用次数。@RobertK ya你是对的。我只是想让海报知道他不需要做
str\u word\u count
相反,他可以在分解数组上使用一个
foreach
:)这显然不是一个最佳解决方案:)我在看到你的解决方案后发布了这个答案。这就是为什么我提到这一点也可以解决他的问题:)这实际上并不计算一个单词的使用次数。他仍然需要使用我创建的循环来交流实际进行频率计数。这实际上并不计算一个单词的使用次数。他仍然需要使用我创建的循环来实际进行频率计数。谢谢你的回答,@Robert K,你能进一步解释吗?对不起,我很难理解你的指示。我还是一个新手,没有经验,请理解还有。我终于成功了。非常感谢@Robert K。非常感谢你的努力。谢谢你的回答,@Robert K,你能进一步解释一下吗?对不起,我很难理解你的指示。我还是个新手,没有经验。请理解。我终于成功了。非常感谢@Robert K。非常感谢你的努力。