php - 如何将关联数组元素按索引分组在一起
问题描述
我的老板想展示人们请求特许经营数据的最受欢迎的州。我正在使用用户输入的邮政编码。我通过一个函数运行它来查找状态,但问题是我对每个邮政编码都有一个计数,而不是状态本身的总数。我需要将每个邮政编码的总数合并为一个州的总数。
我可以通过在循环中放置一个计数器来添加所有这些,但它不会因每个状态而中断。所以我想解决方案是在状态改变时打破循环?所以目前的输出是这样的:
纽约 - 8 纽约 - 11 纽约 -236 纽约 - 7 加利福尼亚 - 2 阿拉巴马 - 7
我需要将所有纽约添加到一个类别中。
<?php
include("databaseClass.php");
$databaseClass = new databaseClass();
$conn = $databaseClass->connect();
$countFranArr = array();
$running = 0;
$sqlFranCount = "select client_zip, count(*) as total from request_form_commits inner join franchise on franchise.franchise_id = request_form_commits.franchise_id
where time_of_request >= '2011-03-20 18:01:04' and time_of_request <= '2033-03-20 21:03:22' group by client_zip";
$resultFranCount = $conn->query($sqlFranCount);
if($resultFranCount->num_rows > 0)
{
while($rowFranCount = $resultFranCount->fetch_assoc())
{
//array_push_assoc($countCatArr, $rowCatCount['fdd_category'], $rowCatCount['total']);
//echo $rowCatCount['total']."<br>";
$countFranArr[$rowFranCount['client_zip']] = $rowFranCount['total'];
}
}
//arsort($countFranArr);
foreach($countFranArr as $zip=>$total)
{
//echo $databaseClass->getState($zip)." - ".$total."<br>";
$state = $databaseClass->getState($zip);
if($state == "")
{
echo "";
}
else{
echo $state." - ".$total."<br>";
$running = $running + $total;
}
}
echo $running;
?>
预期结果将是
纽约 267 加利福尼亚 - 3 等...
每个州都有一个总数,所以我可以按最受欢迎的排序
解决方案
在第一个循环中有几种方法可以做到这一点,这里有一个:
while($rowFranCount = $resultFranCount->fetch_assoc()) {
$state = $databaseClass->getState($rowFranCount['client_zip']);
if(!isset($result[$state])) {
$result[$state] = 0;
}
$result[$state] += $rowFranCount['total'];
}
然后循环显示结果:
foreach($result as $state => $total) {
echo "$state - $total<br>";
}
推荐阅读
- php - 使用 jQuery 触发动态按钮 ID
- javascript - 无法检测到用户何时到达手机浏览器的末尾
- swift - uiactivity 和 uiwebview 委托
- javascript - RXJS6 - 从返回 Observable 的 Promise 函数返回 Observable?
- cuda - 64位线程分离共享内存最小化bank冲突的策略
- java - JMS如何读取队列中的多个文件
- applescript - “告诉应用程序'邮件'”将不接受来自 AppleScript-ObjC 应用程序中 IBOutlet 的字符串
- mysql - 保存 MySQL 空间数据 Google maps API Bounds
- r - 将时间序列分解为 R 中多个组的趋势、季节性和随机,以获取月度数据
- java - Java检查开始日期和结束日期是否在间隔内