数组显示顺序

时间:2013-05-17 22:42:18

标签: php mysql

所以这个脚本就是这样的。它会将您选择的标记作为您的兴趣,并将其与其他用户标记进行比较。下面的这个脚本给出了我和另一个人共有多少标签的输出。

$get_userinfo = mysql_query("SELECT * FROM users") or die(mysql_error());
        while($userinfo = mysql_fetch_array($get_userinfo)) {
            $usertags = $userinfo['tags'];
            $tagsdata = explode(" ", $usertags);
            $interestsdata = explode(" ", $interests);
            $result = array_intersect($interestsdata, $tagsdata);
            echo "Count under this belongs to ".$userinfo['name']."";
            echo count($result);
            echo "<br />";
            }

现在,我想首先,这个脚本还会在列表中显示我,所以我看到我和自己共有多少个标签,我想要删除自己。其次,我如何列出它,以便最高编号(大多数常用标签)的人显示在顶部并降序。

1 个答案:

答案 0 :(得分:0)

添加条件以从您自己的查询中排除自己:

SELECT * FROM users WHERE user_id != [your user id]

要按标签数量排序,您需要在SQL语句中发出一个聚合函数,以便按标签和用户对结果进行分组。如果没有看到你的表格结构,我只能提供一个非常概括的陈述

SELECT username, tag, count(tag) FROM users JOIN tags ON x = y WHERE user_id != [your user id] GROUP BY user_id, tag_id ORDER BY count(tag) DESC

另一种选择是收集您的数据,并在您已经知道每个用户共有多少个标签后,使用PHP对其进行排序。有关排序数组的信息,请参阅http://php.net/manual/en/function.sort.php

你也应该开始使用PDO或mysqli,因为mysql函数已被正式弃用。

我也强烈建议您不要在一个数据库字段中放置多个标签。