Php 对数据库中的单词实例进行排序和计数

Php 对数据库中的单词实例进行排序和计数,php,string,Php,String,我用了下面的问题 我的数据库中有一个带有文本字段的表,我想对该字段中的单词进行一些分析,但我需要合并结果 ID | Text Field 1 | happy beautiful happy lines pear gin happy lines rock happy lines pear 2 | happy lines pear gin happy lines rock happy lines pear 我现在有了一个如下所示的数组(但它是每行的) 第1行 第2排 如何对所有行执行此操作

我用了下面的问题

我的数据库中有一个带有文本字段的表,我想对该字段中的单词进行一些分析,但我需要合并结果

ID | Text Field
1  | happy beautiful happy lines pear gin happy lines rock happy lines pear 
2  | happy lines pear gin happy lines rock happy lines pear 
我现在有了一个如下所示的数组(但它是每行的)

第1行

第2排

如何对所有行执行此操作以合并结果-数据库中有30000行文本

预期成果:

Array (
    [happy] => 8
    [beautiful] => 1
    [lines] => 6
    [pear] => 4
    [gin] => 2
    [rock] => 2 )

当您从数据库中获取每一行时,保持一个运行总数

$total = array();
foreach($row as $word=>val){
    if(!isset($totals[$word])) $totals[$word] = 0;
    $totals[$word] += $val;
}

当您从数据库中获取每一行时,保持一个运行总数

$total = array();
foreach($row as $word=>val){
    if(!isset($totals[$word])) $totals[$word] = 0;
    $totals[$word] += $val;
}

我会这样做:创建一个名为words的新表,从数据库中取出每一行,循环遍历它,分解字符串并在数据中插入每个单词,可以选择存储数据,如主表id,这样您就可以获得关于上下文或单词的大多数附加统计信息,如果处理多行和大型数据集,这可能不是最佳选择


然后,您可以使用sql构建计数等。我会这样做:创建一个名为words的新表,从数据库中拉出每一行,循环遍历它,分解字符串并在数据中插入每个单词,可以选择存储诸如主表id之类的数据,这样您就可以获得有关上下文或单词的更多统计信息,如果处理多行和大型数据集,这可能不是最佳选择


然后,您可以使用sql来建立计数等

您可以使用sql来直接计算字数。看看前面的答案:


您可以使用SQL直接计算字数。看看前面的答案:


PHP数组可以用作映射。因此,您所要做的就是获取每一行的数据,维护一个单词数组映射作为键,它们的计数作为值。每次看到密钥存在时,只需将其添加到计数中,或者添加具有相应计数的新密钥

$grandtotal = array();
foreach($row as $key=>$val) {
 if(array_key_exists($key, $grandtotal)) {
  $grandtotal[$key] += $val;
 }
 else {
  $grandtotal[$key] = $val;
 }
}

PHP数组可以用作映射。因此,您所要做的就是获取每一行的数据,维护一个单词数组映射作为键,它们的计数作为值。每次看到密钥存在时,只需将其添加到计数中,或者添加具有相应计数的新密钥

$grandtotal = array();
foreach($row as $key=>$val) {
 if(array_key_exists($key, $grandtotal)) {
  $grandtotal[$key] += $val;
 }
 else {
  $grandtotal[$key] = $val;
 }
}

我手头没有您的数据库,因此我将通过一个数组进行演示:

[ghoti@pc ~]$ cat doit.php
#!/usr/local/bin/php
<?php

$a=array(
  '1' => "happy beautiful happy lines pear gin happy lines rock happy lines pear",
  '2' => "happy lines pear gin happy lines rock happy lines pear",
  '3' => "happy rock pear happy happy happy",
);

$wordlist=array();

foreach ($a as $index => $line) {
  foreach (explode(" ", $line) as $word) {
    $wordlist[$word]++;
  }
}

print_r($wordlist);

[ghoti@pc ~]$ ./doit.php
Array
(
    [happy] => 11
    [beautiful] => 1
    [lines] => 6
    [pear] => 5
    [gin] => 2
    [rock] => 3
)
[ghoti@pc ~]$ 

我不知道您使用的是什么数据库服务器,因此我无法提供一个我知道适用于您的具体示例。

我手头没有您的数据库,因此我将通过一个数组来演示:

[ghoti@pc ~]$ cat doit.php
#!/usr/local/bin/php
<?php

$a=array(
  '1' => "happy beautiful happy lines pear gin happy lines rock happy lines pear",
  '2' => "happy lines pear gin happy lines rock happy lines pear",
  '3' => "happy rock pear happy happy happy",
);

$wordlist=array();

foreach ($a as $index => $line) {
  foreach (explode(" ", $line) as $word) {
    $wordlist[$word]++;
  }
}

print_r($wordlist);

[ghoti@pc ~]$ ./doit.php
Array
(
    [happy] => 11
    [beautiful] => 1
    [lines] => 6
    [pear] => 5
    [gin] => 2
    [rock] => 3
)
[ghoti@pc ~]$ 

我不知道您使用的是什么数据库服务器,因此我无法提供一个我知道适用于您的具体示例。

那么,您想将阵列添加到一起吗?是的,我想-有30000个阵列,所以,您想将阵列添加到一起吗?是的,我想-虽然有30000个阵列