繁体   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