[英]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.