簡體   English   中英

如何將關聯數組元素按索引分組在一起

[英]How to add associative array Elements together grouped by their index

我的老板想展示人們要求獲得特許經營數據的最受歡迎的州。 我正在使用用戶放入的郵政編碼。我通過一個函數運行它來查找狀態,但是問題是我對每個郵政編碼都有一個計數,而不是該狀態本身的總數。 我需要將每個郵政編碼的總計(合並為該州的總計)。

我可以通過將一個計數器放在循環中來添加所有這些內容,但是對於每個狀態它都不會中斷。 所以我想解決方案是一種在狀態改變時打破循環的方法嗎? 所以目前的輸出是這樣的:

紐約-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>";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM