Как добавить ассоциативный массив Элементы вместе сгруппированы по их индексу

0

Мой босс хочет показать самые популярные штаты, из которых люди запрашивают данные по франчайзингу. Я работаю с почтовыми индексами, которые вводят пользователи. Я запускаю его через функцию, чтобы найти состояние, но проблема в том, что у меня есть счетчик для каждого почтового индекса, а не сумма для самого государства. Мне нужно объединить суммы для каждого почтового индекса (в одну сумму для штата).

Я могу сложить все это, поместив счетчик в цикл, но он не прерывается для каждого состояния. Итак, я думаю, что решение будет способ разорвать петлю, когда состояние меняется? поэтому в настоящее время вывод таков:

Нью-Йорк - 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 и т.д.

Один общий счет для каждого штата, поэтому я могу заказать их по самым популярным

Теги:

1 ответ

0

Есть несколько способов сделать это в первом цикле, вот один:

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>";
}
  • 0
    Ты мужчина! Или женщина, если вы леди. Сделал именно то, что мне нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню