php统计某些作者在表中发布

时间:2011-09-16 15:58:07

标签: php foreach count

可能很简单,但我遇到了一些问题。

我所要做的就是“统计”“特定”“作者”来自某个“类别”的帖子数量

表格设置:

id | author | category | full | short

1      jim       2,3      ...     ...
2      josh      5,9      ...     ...
3      jim       3,9      ...     ...
4      jim       1,9      ...     ...
5      josh      3,4      ...     ...
6      trina     2        ...     ...

我知道怎么查询..

但是,我如何编码“foreach”

计算我查询的帖子数量(示例查询)

WHERE category = '9' AND author = "$author"

所以它会告诉我那位作者的帖子,这没什么大不了的,但我怎么表现出来:

如果$ author =“jim”

Jim(第9类中有2个帖子)

或者如果$ author =“josh”

Josh(第9类中的1篇帖子)

提前致谢!!

这是我用的,谢谢!

<?php echo $row_Recordset1['author']; echo '(' . $totalRows_Recordset1 . ')'; ?>

2 个答案:

答案 0 :(得分:2)

您可以创建一个以作者为索引的多维数组,每个作者索引可以是另一个类别数组和多少个帖子。

$postCounts = array();
foreach($results as $result) {
    if (!array_key_exists($result['author'], $postCounts)) {
        $postCounts[$result['author']] = array();
    }

    if (!array_key_exists[$result['category'], $postCounts[$result['author']])) {
        $postCounts[$result['author']][$result['category'] = 1; // first post seen
    } else {
        $postCounts[$result['author']][$result['category'] += 1; // increment count
    }
}

从查看类别结果来看,您可能需要用逗号分解它们并在循环中添加第二个array_key_exists块。但是这可以在PHP foreach中做你想要的。

最后你得到一个这样的数组:

$postCounts = Array(
    'jim' => Array(9 => 2) // 2 posts in category 9 for jim
    'josh' => Array(9 => 1) // 1 post in category 9 for josh
    'bob' => Array(9 => 3, 2 => 5) // 3 posts in category 9, 5 posts in category 2.
)

答案 1 :(得分:1)

你可以通过sql查询来做到这一点,只是没有foreach来计算。未经您测试可以这样做

(未经测试)

SELECT * FROM table_name WHERE category LIKE '%,9' OR category LIKE '9,%' OR category LIKE '9' OR category LIKE '%,9,%'

然后你可以通过

直接计算它
mysql_num_rows