使用php 5.3和mysqli我从一个只有用户名的查询返回一个结果集,比如
$query_username = "SELECT username FROM some_table WHERE param = 1";
$username = $mysqliObject->query($query_username);
while($row_username = $username->fetch_object()){
print "<br>Username: $row_username->username";
}
一切都很好,但这是我的问题,有重复的用户名,我不知道手中的查询中会有哪些名字,可能是bob,sue,james。或者它可能是汤姆,迪克,哈利,汤姆。我需要做的是打印出每个用户名以及它在此对象中显示的次数。由于非常奇怪的原因,我不能在查询中使用像group by和count(*)这样的整洁的东西(不要问它真的很奇怪)。所以我的问题是,循环返回对象(或者如果需要的话是关联数组)的最快方法是获取每个唯一名称以及它出现的次数。谢谢你的帮助,如果这是一个新生的CS问题我道歉,我是自学成才,总是填补空白!
答案 0 :(得分:1)
e.g。
$users = array();
while( false!==($row=$result->fetch_array()) ){
if ( isset($users[$row['username']]) ) {
$users[$row['username']] += 1;
}
else {
$users[$row['username']] = 1;
}
}
asort($users);
答案 1 :(得分:1)
如果您确实必须在PHP端执行此操作而不是使用GROUP BY
子句:
while($row_username = $username->fetch_object())
{
if(isset($usernames[$row_username['username']]))
{
$usernames[$row_username['username']]++;
}
else
{
$usernames[$row_username['username']] = 1;
}
}
asort($usernames);
// use ksort() to sort by username instead of the count
// print out the usernames
foreach($usernames as $username => $count)
{
echo $username . ", count: " . $count;
}