亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 PHP 中按鍵和值對多維數組進行分組

在 PHP 中按鍵和值對多維數組進行分組

PHP
慕無忌1623718 2021-07-06 13:57:52
我有提交的調查,我想統計結果。每個調查都保存在一個多維數組中,如下所示:Array ( [name] => Clark Kent [rating] => 5 )這些來自循環,因為它們是單獨的數據庫條目。所以我首先創建一個包含所有這些組合的新數組:$mods = array();$index = -1;foreach($fields as $field) {  $index++;  $mods[$index]['name'] = $field['name'];  $mods[$index]['rating'] = $field['rating'];}然后我將這些分組,以便將同名的所有評級放在一起,以便我可以稍后對它們進行匯總。$groups = array();foreach ($mods as $value) {  $groups[$value['name']][] = $value;}這會產生以下結果:Array (   [Clark Kent] => Array (    [0] => Array (        [name] => Clark Kent        [rating] => 5        )    [1] => Array (        [name] => Clark Kent        [rating] => 5        )    )[Peter Parker] => Array (    [0] => Array (        [name] => Peter Parker        [rating] => 5        )    [1] => Array (        [name] => Peter Parker        [rating] => 5        )    )[Bruce Wayne] => Array (    [0] => Array (        [name] => Bruce Wayne        [rating] => 5        )    [1] => Array (        [name] => Bruce Wayne        [rating] => 5        )    )[Bruce Banner] => Array (    [0] => Array (        [name] => Bruce Banner        [rating] => 5        )    [1] => Array (        [name] => Bruce Banner        [rating] => 5        )    ))我想要完成的事情是這樣的:<table>  <tr>    <td>Clark Kent</td>    <td>{average of all ratings}</td>  </tr></table>我大部分時間都在那里,但我被卡住了!我不確定如何獲得name沒有任何類型的索引或鍵的分組,以便我可以將該值用于我的表。然后我需要對每個分組的值求和。
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

我會在從數據庫讀取數據的循環中做所有必要的數學運算。像這樣的東西:


$ratings = array();

while ($row = $result->fetch_assoc()) {

    $name = $row['name'];

    if (!isset($ratings[$name])) {

        $ratings[$name] = array('count' => 1, 'sum' => $row['rating']);

    }

    else {

        $ratings[$name]['count']++;

        $ratings[$name]['sum'] += $row['rating'];

    }

}

然后你可以像這樣輸出你的表格:


echo "<table>";

foreach ($ratings as $name => $r) {

    echo "<tr><td>$name</td><td>" . round($r['sum'] / $r['count'], 1) . "</td></tr>";

}

echo "</table>";


查看完整回答
反對 回復 2021-07-16
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

要獲得平均值,您可以執行以下操作:


foreach ($groups as $name => $group) {

    $average = array_sum(array_column($group, 'rating')) / count($group);

    echo $name;

}


查看完整回答
反對 回復 2021-07-16
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

您可以首先在用于處理這些日期的結構中簡化問題


foreach($fields as $field) {

     $mods[$field['name']][] = $field['rating'];

}

然后只用關鍵參數 foreach


foreach($mods as $name => $mod) {

     echo $name;

     echo array_sum($mod) / count($mod);

}


查看完整回答
反對 回復 2021-07-16
  • 3 回答
  • 0 關注
  • 232 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號