php mysqli对象搜索和排序
使用PHP5.3和mysqli,我从一个只有用户名的查询返回一个结果集,比如php mysqli对象搜索和排序,php,arrays,search,object,mysqli,Php,Arrays,Search,Object,Mysqli,使用PHP5.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_u
$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";
}
$query\u username=“从一些参数为1的表中选择用户名”;
$username=$mysqlioobject->query($query\u username);
而($row\u username=$username->fetch\u object()){
打印“
用户名:$row\u用户名->用户名”;
}
很好,但这是我的问题,有重复的用户名,我不知道前面的查询中会出现哪些名称,可能是bob、sue、james。或者是汤姆,迪克,哈利,汤姆。我需要做的是打印出每个用户名以及它在这个对象中出现的次数。出于非常奇怪的原因,我不能在查询中使用诸如group by和count(*)之类的简洁的东西(不要问,这真的很奇怪)。所以我的问题是,通过返回对象(或关联数组,如果需要)循环获取每个唯一名称的最快方法是什么,以及它出现了多少次。谢谢你的帮助,如果这是一个大一新生的CS问题,我道歉,我自学成才,总是填补空白 例如
$users = array();
while( false!==($row=$result->fetch_array()) ){
if ( isset($users[$row['username']]) ) {
$users[$row['username']] += 1;
}
else {
$users[$row['username']] = 1;
}
}
asort($users);
如果您确实必须在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;
}
太好了,太棒了!对于您的示例,我唯一的意见是使用fetch_array()而不是fetch_object()。谢谢,不仅是因为代码,而且还有关于数组的教育!