簡體   English   中英

通過向上計數將數據從數據庫保存到關聯數組中-PHP

[英]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查詢來完成。 使用countgroup 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM