Мой босс хочет показать самые популярные штаты, из которых люди запрашивают данные по франчайзингу. Я работаю с почтовыми индексами, которые вводят пользователи. Я запускаю его через функцию, чтобы найти состояние, но проблема в том, что у меня есть счетчик для каждого почтового индекса, а не сумма для самого государства. Мне нужно объединить суммы для каждого почтового индекса (в одну сумму для штата).
Я могу сложить все это, поместив счетчик в цикл, но он не прерывается для каждого состояния. Итак, я думаю, что решение будет способ разорвать петлю, когда состояние меняется? поэтому в настоящее время вывод таков:
Нью-Йорк - 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>";
}