cari

Rumah  >  Soal Jawab  >  teks badan

Dalam gelung foreach dalam PHP, kumpulkan mengikut tarikh dan dapatkan jumlah kiraan baris yang sama

Saya mempunyai array seperti ini

Array
(
    [0] => Array
        (
            [0] => 2023-06-28
            [1] => 5482
        )

    [1] => Array
        (
            [0] => 2023-06-28
            [1] => 316
        )

    [2] => Array
        (
            [0] => 2023-06-28
            [1] => 189
        )

    [3] => Array
        (
            [0] => 2023-06-29
            [1] => 5
        )

    [4] => Array
        (
            [0] => 2023-06-29
            [1] => 0
        )

    [5] => Array
        (
            [0] => 2023-06-30
            [1] => 5788
        )

    [6] => Array
        (
            [0] => 2023-06-30
            [1] => 1266
        )
)

Saya mahu mengumpulkan mengikut tarikh dan menjumlahkan nilai

$output=array();
foreach($array as $values){
    $date = $values[0];
    $output[$d][1]+=$values[1];
}
Hasil

$output ialah

Array
(
    [0] => Array
        (
            [0] => 2023-06-28
            [1] => 5987
        )

    [1] => Array
        (
            [0] => 2023-06-29
            [1] => 5
        )

    [2] => Array
        (
            [0] => 2023-06-30
            [1] => 7054
        )
)

Semuanya baik, tetapi saya perlu mengira purata, bukan menjumlahkan nilai, jadi idea saya adalah untuk mendapatkan jumlah hari yang sama dalam foreach dan kemudian membahagikan jumlah itu dengan jumlah hari yang sama. Sebagai contoh, untuk tarikh 2023-06-28, jumlahnya ialah 5987 dan kuantitinya ialah 3, jadi hasilnya hendaklah 5987/3.

Adakah terdapat cara untuk melakukan ini, atau cara lain untuk mendapatkan purata dalam foreach?

P粉304704653P粉304704653479 hari yang lalu596

membalas semua(1)saya akan balas

  • P粉807239416

    P粉8072394162023-09-17 16:01:12

    # 构建数组
    $output = [];
    foreach($array as $values){
        $date = $values[0];
        if(!isset($output[$date])) {
            $output[$date] = ['total' => 0, 'count' => 0];
        }
        $output[$date]['total'] += $values[1];
        $output[$date]['count']++;
    }
    
    # 计算总和
    foreach($output as $date => $data){
        $output[$date]['average'] = ($data['total'] / $data['count']);
    }
    
    print_r($output);

    balas
    0
  • Batalbalas