[英]Saving data from database into associative array with counting up - PHP
我想对数据库中的数据进行排序。 我想使用关联数组,以便可以对其进行最佳排序。
如上所述,我从数据库中获取了所有数据。 通过执行$ row ['manufacturer'],我将获得如下数据:
motorola
sony
motorola
google
samsung
lg
samsung
我希望将其保存在数组中:(顺序不重要,尽管按字母顺序优先)
"motorola" => 2
"sony" => 1
"google" => 1
"samsung" => 2
"lg" => 1
我通过这样做尝试了一下,但是它根本无法正常工作,并导致我的Web主机清除了日志,因为它导致了将近2 gigs的日志文件。
我写来保存的代码
$manufacturers = array();
//$row are the rows from my database. I will not add them, but by doing $row['manufacturer'] you'll get some brands like google, motorola, etc.
while($row = $resultSelect->fetch_assoc()) {
for ($i = 0; $i < $manufacturers; $i++) {
$alreadyEntered = 0;
if ($manufacturers[$i] == $row['manufacturer']) $alreadyEntered = 1;
if ($alreadyEntered == 0) {
$manufacturers[$row['manufacturer']] = 1;
} else {
$manufacturers[$row['manufacturer']] += 1;
}
//It caused huge logs, so I decided to break on 50.
if ($i > 50) {
break;
}
}
}
//Dump it :) to see if it worked
var_dump($manufacturers);
我不知道如何使它工作。 我尝试在Google和SO上搜索在关联数组中设置值,但是没有任何效果。
编辑:
我的行:
您可以通过SQL查询来完成。 使用count
和group by
查询group by
。
SELECT name, COUNT(*) as total
FROM manufactures
GROUP BY name
ORDER BY name ASC
name
是您的制造商名称列。 manufactures
是你的表名。
示例PHP代码:
$sql="SELECT name, COUNT(*) as total
FROM manufactures
GROUP BY name
ORDER BY name ASC";
$result=mysqli_query($con,$sql);
while($row = mysqli_fetch_assoc($result))
{
echo "Name: ". $row['name'] . " Total: ". $row['total'] . "<br>";
}
简要说明:
该查询将执行的操作是将select all
制造商名称并对它们进行count
。 到了同一时间,它将名称group
在一起,这意味着将多个相同的名称组合在一起并进行计数。 最后order by name asc
用于按升序(A-> Z)按字母顺序对结果进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.