【问题标题】:Saving data from database into associative array with counting up - PHP将数据库中的数据保存到关联数组中并计数 - PHP
【发布时间】:2017-02-06 12:32:30
【问题描述】:

我想对我的数据库中的数据进行排序。我想使用关联数组,以便对其进行最佳排序。

如上所述,我从数据库中获取所有数据。通过执行 $row['manufacturer'] 我会得到如下数据:

motorola
sony
motorola
google
samsung
lg
samsung

我希望它像这样保存在数组中:(顺序并不重要,尽管首选字母顺序)

"motorola" => 2
"sony" => 1
"google" => 1
"samsung" => 2
"lg" => 1

我尝试这样做,但它不起作用并导致我的网络主机清理日志,因为它导致了近 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 查询来做到这一点
  • @AfifZafri 是的,我有多行,是的,我想通过计数对其进行排序。如果我可以使用 SQL 来做到这一点,我该怎么做呢?我还编辑了帖子,以便您可以看到行

标签: php arrays sorting for-loop while-loop


【解决方案1】:

您可以通过 SQL 查询来完成。 使用countgroup 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)对结果进行排序。

【讨论】:

  • 太棒了。我已编辑答案以按字母顺序对结果进行排序
  • 太好了,感谢您给了我更有效的方法!
  • @Jason 我已经更新了答案。将计数结果设置为“总计”列名,然后您可以访问它。看我的示例 PHP 代码
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 2018-02-17
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多