php - 表格中的常用字数统计,而不仅仅是一行

标签 php mysql sql

我知道我可以计算字符串中单词的常见出现次数,但对于多个字符串,最佳解决方案是什么?或者在这种情况下,表中的行?

示例表:

ID    Title
------------
1     red car
2     blue car
3     red bike
4     green car
5     red and green car

我想从列中返回前 3 个常用词及其计数:title 例如

Word    Count
--------------
car     4
red     3
green   2

我正在使用 MySQL 和 PHP

有没有一种有效的方法来做到这一点?

最佳答案

这可以通过 MySQL 使用它的 string manipulation methods 来完成.使用这些,您可以创建一个查询,从您的表行中获取所有“单词”。 然而,在 MySQL 中拆分字符串并不是一个小问题。遗憾的是 MySQL 没有拆分或分解方法。 了解一下 here .

如果将该查询用作子查询,则可以使用 order by 和 MySQL 的字符串长度方法来获取单词及其出现的有序列表。

您的替代方法是遍历所有 MySQL 结果,用您找到的单词填充本地 PHP 数组并保持计数。请参阅此示例:

<?php
// connect to db and so fort
...
$wordCounterArray = array();
while(($row = mysqlfetch_assoc($mysqlHandle) !== false ) {
  $words = explode(' ',$row['Title']);
  foreach ($words as $word) {
    if(array_key_exists($word, $wordCounterArray ) {
      $wordCounterArray[$word]++;
    }
    else {
      $wordCounterArray[$word] = 1;
    }
  }
} 

现在您仍然需要根据数组的值对该数组进行排序,但我想您会自己使用 google 和 php 在线文档弄清楚如何做到这一点,对吧?

关于php - 表格中的常用字数统计,而不仅仅是一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22400446/

相关文章:

php - 每次使用变量时都会调用 PHP 函数吗?

MySQL "command denied to user for table"错误和用户权限

mysql - 正确加入1 :n:1:1 relation in mysql database

mysql - 使用 MySQL 生成随机且唯一的 8 个字符字符串

sql - 查询多列不同条件的数据

php - mysql 转义 getsqlvaluestring AccID

php - CodeIgniter 无法在本地主机上工作

php - 试图从全局命名空间加载类 "DOMDocument"

php - 处理语言识别

mysql - 为什么执行2次插入的查询无法执行?