用于以二维方式存储数据的数组/其他数据结构

时间:2014-06-25 20:42:10

标签: php arrays data-structures

这里首先我从数据库中获取所有标签。 (标签是字符串,如市场营销,工作等)。

$POS是POS(词性词汇)的数组。对于这个数组中的每个单词,对于给定的标签,我使用writtten方程计算概率。

当它出现时,有两个嵌套循环。为了做出决定,我需要数组$prob中的最高值和属于该值的标记。

在这段代码中,我将得到数组$prob中的所有值,并且从中我可以获得最高值,但是我如何才能持久保存标记值? PHP中是否有任何其他数据结构来管理这种情况?

    $selectTag = mysqli_query($con,"SELECT tag from koove_tag");
    $prob = array();        
    $i=0;
    while ($row1 = @mysqli_fetch_array($selectTag))
    {
        foreach($POS as $p)
        {
            //Calculate total pos for given tag
            $selectPOS = mysqli_query($con,"SELECT * from koove_post where tag = '".$row1[tag]."'");
            while ($row2 = @mysqli_fetch_array($selectTag))
            {
                $totalPOSs.=$row2[pos].",";     
            }
            $totalPOS_count = str_word_count($totalPOSs);
            //calculate how many times particular 'pos' appears for given tag
            $selectPOS = mysqli_query($con,"SELECT * from koove_post where tag = '".$row1[tag]."'");
            while ($row3 = @mysqli_fetch_array($selectTag))
            {
                $POSs.=$row3[pos].",";      
            }
            $pos_Count = echo substr_count($string, $p);
            //calculate distinct POS in all POSs for all tags
            $selectPOS = mysqli_query($con,"SELECT pos from koove_post");
            while ($row4 = @mysqli_fetch_array($selectTag))
            {
                $POSs.=$row4[pos].",";      
            }
            $distinct_pos_Count = echo substr_count($string, $p);
            $prob[$i] = ($pos_Count + 1)/ ($totalPOS_count + $distinct_pos_Count);
            $i++;
        }               
    }

有大量(数千)帖子,如果有更好的方法来加快处理速度,也欢迎。

2 个答案:

答案 0 :(得分:0)

当然可以。使用stdClass()对象来保存所需的值。然后编写方法对它们进行排序。例如:

$prbo[$i] = new stdClass();
$prob[$i]->value =  ($pos_Count + 1)/ ($totalPOS_count + $distinct_pos_Count);
$prob[$i]->tag = $row1[tag];

构建该数组后,再编写自定义排序函数。

http://www.php.net/manual/en/array.sorting.php

答案 1 :(得分:0)

1.您可以使用连接查询来消除其中一个循环。

2.您可以使用结束(数组)或自定义排序功能获得最高价值。